Problem p02725 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
#define pi acos(-1)
#define maxn 100001
using namespace std;
typedef long long ll;
const int mx = 200005;
// ll a[mx];
// ll tree[mx*4];
// ll n;
// ll solve(ll arr[], ll x, ll n)
//{
//   ll *low = lower_bound(arr, arr+n, x);
//   if (low == (arr + n) || *low != x)
//      return 0;
//   ll *high = upper_bound(low, arr+n, x);
//   return high - low;
// }
// void init(int node, int b, int e)
//{
//     if (b == e)
//     {
//         tree[node] = a[b];
//         return;
//     }
//     int Left = node * 2;
//     int Right = node * 2 + 1;
//     int mid = (b + e) / 2;
//     init(Left, b, mid);
//     init(Right, mid + 1, e);
//     ll x= max(tree[Left],tree[Right]);
//     tree[node]=solve(a,x,n);
// }
// int query(int node, int b, int e, int i, int j)
//{
//     if (i > e || j < b)
//         return 0;
//     if (b >= i && e <= j)
//         return tree[node];
//     int Left = node * 2;
//     int Right = node * 2 + 1;
//     int mid = (b + e) / 2;
//     int p1 = query(Left, b, mid, i, j);
//     int p2 = query(Right, mid + 1, e, i, j);
//     ll x= max(p1,p2);
//     return solve(a,x,n);
// }
// void update(int node, int b, int e, int i, int newvalue)
//{
//     if (i > e || i < b)
//         return;
//     if (b >= i && e <= i) {
//         tree[node] = newvalue;
//         return;
//     }
//     int Left = node * 2;
//     int Right = node * 2 + 1;
//     int mid = (b + e) / 2;
//     update(Left, b, mid, i, newvalue);
//     update(Right, mid + 1, e, i, newvalue);
//     tree[node] = __gcd(tree[Left] , tree[Right]);
// }
// void euiler()
//{
//     for(int i=1;i<maxn;i++)phi[i]=i;
//     for(int p=2;p<maxn;p++){
//         if(phi[p]==p){
//             phi[p]=p-1;
//             for(int i=2*p;i<maxn;i+=p){
//                 phi[i]=(phi[i]/p)*(p-1);
//             }
//         }
//     }
// }
// void update(ll idx,ll val)
//{
//     while(idx<=n){
//         tree[idx]=max(tree[idx],val);
//         idx+=(idx&-idx);
//     }
// }
// ll query(ll idx)
//{
//     ll sum=0;
//     while(idx>0){
//         sum=max(sum,tree[idx]);
//         idx-=(idx&-idx);
//     }
//     return sum;
// }

int main() {
  ll n, k;
  cin >> n >> k;
  ll a[k + 2];
  for (int i = 0; i < k; i++) {
    cin >> a[i];
  }
  sort(a, a + k);
  ll mx = LONG_MIN;
  for (int i = 0; i < k - 1; i++) {
    mx = max(mx, a[i + 1] - a[i]);
  }
  cout << abs(n - max(mx, a[0] - a[k - 1] + n)) << endl;
}


Error: WA

Fixed submission:

#include <bits/stdc++.h>
#define pi acos(-1)
#define maxn 100001
using namespace std;
typedef long long ll;
const int mx = 200005;
// ll a[mx];
// ll tree[mx*4];
// ll n;
// ll solve(ll arr[], ll x, ll n)
//{
//   ll *low = lower_bound(arr, arr+n, x);
//   if (low == (arr + n) || *low != x)
//      return 0;
//   ll *high = upper_bound(low, arr+n, x);
//   return high - low;
// }
// void init(int node, int b, int e)
//{
//     if (b == e)
//     {
//         tree[node] = a[b];
//         return;
//     }
//     int Left = node * 2;
//     int Right = node * 2 + 1;
//     int mid = (b + e) / 2;
//     init(Left, b, mid);
//     init(Right, mid + 1, e);
//     ll x= max(tree[Left],tree[Right]);
//     tree[node]=solve(a,x,n);
// }
// int query(int node, int b, int e, int i, int j)
//{
//     if (i > e || j < b)
//         return 0;
//     if (b >= i && e <= j)
//         return tree[node];
//     int Left = node * 2;
//     int Right = node * 2 + 1;
//     int mid = (b + e) / 2;
//     int p1 = query(Left, b, mid, i, j);
//     int p2 = query(Right, mid + 1, e, i, j);
//     ll x= max(p1,p2);
//     return solve(a,x,n);
// }
// void update(int node, int b, int e, int i, int newvalue)
//{
//     if (i > e || i < b)
//         return;
//     if (b >= i && e <= i) {
//         tree[node] = newvalue;
//         return;
//     }
//     int Left = node * 2;
//     int Right = node * 2 + 1;
//     int mid = (b + e) / 2;
//     update(Left, b, mid, i, newvalue);
//     update(Right, mid + 1, e, i, newvalue);
//     tree[node] = __gcd(tree[Left] , tree[Right]);
// }
// void euiler()
//{
//     for(int i=1;i<maxn;i++)phi[i]=i;
//     for(int p=2;p<maxn;p++){
//         if(phi[p]==p){
//             phi[p]=p-1;
//             for(int i=2*p;i<maxn;i+=p){
//                 phi[i]=(phi[i]/p)*(p-1);
//             }
//         }
//     }
// }
// void update(ll idx,ll val)
//{
//     while(idx<=n){
//         tree[idx]=max(tree[idx],val);
//         idx+=(idx&-idx);
//     }
// }
// ll query(ll idx)
//{
//     ll sum=0;
//     while(idx>0){
//         sum=max(sum,tree[idx]);
//         idx-=(idx&-idx);
//     }
//     return sum;
// }

int main() {
  ll n, k;
  cin >> n >> k;
  ll a[k + 2];
  ll mx = LONG_MIN;
  for (int i = 0; i < k; i++) {
    cin >> a[i];
  }
  sort(a, a + k);
  vector<ll> v;
  for (int i = 0; i < k; i++) {
    v.push_back(n + a[i]);
    // ans=min(ans,y+a[i-1]);
  }
  ll ans = LONG_MAX;
  for (int i = 0; i < v.size(); i++) {
    // cout<<v[i]<<" ";
    ans = min(ans, v[k - 1 + i] - v[i]);
  }
  cout << ans << endl;
}