# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
67290 | ekrem | DEL13 (info1cup18_del13) | C++98 | 1084 ms | 2252 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define N 1000005
using namespace std;
int t, n, q, m, b[N], a[N];
bool dp[3][N];
bool f(int sol, int ind){
if(ind > m and sol == 0)
return 1;
if(sol > a[ind])
return 0;
int yeni = a[ind] - sol;
bool don = 0;
int md = a[ind]%2;
if(a[ind] > 0 and !md)
md = 2;
if(sol == md)
don |= f(0, ind + 1);
// cout << a[ind] << " -> " << sol << " = " << yeni << " , " << md<< endl;
for(int i = 1; i <= 2; i++){
if(yeni >= i and (yeni - i)%2 == 0)
don |= f(i, ind + 1);
}
return don;
}
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
scanf("%d",&t);
while(t--){
m = 0;
scanf("%d %d",&n ,&q);
for(int i = 1; i <= q; i++)
scanf("%d", b + i);
b[q + 1] = n + 1;
for(int i = 1; i <= q + 1; i++)
a[++m] = b[i] - b[i - 1] - 1;
// for(int i = 1; i <= m; i++)cout << a[i] << " ";cout << endl;
if(!f(0, 1))
printf("-1\n");
else
printf("1\n");
}
return 0;
}
Compilation message (stderr)
# | 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... |