#include <iostream>
using namespace std;
const int N = 1<<17;
int dp[N][3], Par[N][3], a[N];
void solve(){
int n, q;
cin>>n>>q;
for (int i=1;i<=q;i++)
cin>>a[i];
a[++q] = n + 1;
a[q+1] = n + 2;
for (int i=0;i<=q+2;i++){
for (int j : {0, 1, 2})
dp[i][j] = 0;
}
dp[0][0] = 1;
for (int i=1;i<=q;i++){
for (int j : {0, 1, 2}){
for (int k : {0, 1, 2}){
int ms1 = a[i] - a[i-1] - 1, ms2 = a[i+1] - a[i] - 1;
if ((j + k == ms1 and k <= ms2) or (j + k < ms1 and (ms1 - j + k) % 2 == 0 and j + k > 0 and k <= ms2)){
if (dp[i][k] == 0 and dp[i - 1][j] == 1)
Par[i][k] = j, dp[i][k] = 1;
}
}
}
}
if (dp[q][0])
cout<<0<<"\n\n";
else
cout<<-1<<'\n';
}
int main(){
int t;
cin>>t;
while (t--)
solve();
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |