Submission #1318973

#TimeUsernameProblemLanguageResultExecution timeMemory
1318973Jawad_Akbar_JJDEL13 (info1cup18_del13)C++20
40 / 100
12 ms1384 KiB
#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 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...