Submission #637067

#TimeUsernameProblemLanguageResultExecution timeMemory
637067Dec0DeddDEL13 (info1cup18_del13)C++14
0 / 100
9 ms468 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 200+1;
int d[N], rm[N];

void solve() {
   int n, q; cin>>n>>q;

   if (q == 0) {
      cout<<0<<"\n";
      return;
   }

   for (int i=0; i<=n; ++i) d[i]=rm[i]=0;
   vector<int> v;
   v.push_back(0);
   for (int i=0; i<q; ++i) {
      int p; cin>>p;
      v.push_back(p);
   }
   q+=2, v.push_back(n+1);

   for (int i=1; i<q; ++i) d[i]=v[i]-v[i-1]-1;

   for (int i=1; i<q-1; ++i) {
      if (d[i]&1) --d[i], --d[i+1], ++rm[i], ++rm[i+1];
      else if (d[i] > 0 && d[i+1] > 0) {
         d[i]-=2, d[i+1]-=2, rm[i]+=2, rm[i+1]+=2;
      }
   }

   bool ok=true;
   for (int i=1; i<q; ++i) {
      if ((d[i]&1) || d[i] < 0) ok=false;
      if (d[i]%2 == 0 && d[i] > 0 && rm[i] == 0) ok=false;
   }

   if (!ok) {
      cout<<-1<<"\n";
   } else {
      cout<<0<<"\n";
   }
}

int main() {
   int t; cin>>t;
   while (t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...