Submission #637102

#TimeUsernameProblemLanguageResultExecution timeMemory
637102Dec0DeddDEL13 (info1cup18_del13)C++14
0 / 100
17 ms6276 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5+100; int d[N], rm[N], par[N][4], n, q; bool dp[N][4], vis[N][4]; bool gen(int i, int l) { int x=d[i]-l; if (x < 0) return false; if (i == q) { if (l == 0) return true; return false; } if (vis[i][l]) return dp[i][l]; vis[i][l]=true; if (x%2 == 0) { if ((x == 0 || l > 0) && gen(i+1, 0)) par[i][l]=0, dp[i][l]=true; if (x >= 2 && gen(i+1, 2)) par[i][l]=2, dp[i][l]=true; } else { if (gen(i+1, 1)) par[i][l]=1, dp[i][l]=true; } return dp[i][l]; } void solve() { cin>>n>>q; if (q == 0) { cout<<0<<"\n"; return; } for (int i=0; i<=n; ++i) d[i]=rm[i]=0; for (int i=0; i<=n; ++i) { for (int j=0; j<4; ++j) dp[i][j]=vis[i][j]=false, par[i][j]=-1; } 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; bool ok=gen(1, 0); if (!ok) { cout<<-1<<"\n"; } else { cout<<0<<"\n"; cout<<"\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...