#include <bits/stdc++.h>
#define int long long
using namespace std;
int tab[1000007];
int tab2[1000007];
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m, i, j, a, b, t, us, sp, fi, la, w;
cin >> t;
while(t--){
cin >> n;
us=0;
a=0;
b=0;
sp=0;
fi=-1;
for(i=0; i<n; i++){
cin >> tab[i];
tab2[i]=0;
if(i%2){
a+=tab[i];
}
else{
b+=tab[i];
}
if(tab[i]!=0 && fi==-1){
fi=i;
}
if(tab[i]!=0){
la=i;
}
if(sp==0 && tab[i]!=0){
sp++;
}
if(sp==1 && tab[i]==0){
sp++;
}
if(sp==2 && tab[i]!=0){
sp++;
}
}
if(abs(a-b)>=2 || sp>=3){
cout << "NIE\n";
continue;
}
tab[n]=0;
tab2[n]=0;
w=-1;
for(i=fi; i<=la; i++){
tab2[i]=min(tab[i], tab[i+1]);
tab[i+1]-=tab2[i];
tab[i]-=tab2[i];
if(tab[i]){
us+=tab[i];
w=i;
}
/*if(a==0 && tab2[i]!=0 && tab2[i+1]!=0){
us++;
tab[i+1]--;
}*/
}
if(us>=2){
cout << "NIE\n";
continue;
}
if(w==-1){
a=0;
for(i=fi; i<la; i++){
if(tab2[i]==0){
a=a|(i%2+1);
}
}
if(a==3){
cout << "NIE\n";
}
else{
cout << "TAK\n";
}
}
else{
a=(w+1)%2+1;
for(i=fi; i<la; i++){
if(tab2[i]==0){
a=a|(i%2+1);
if(i>w){
a=3;
}
}
}
if(a==3){
cout << "NIE\n";
}
else{
cout << "TAK\n";
}
}
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #include <bits/stdc++.h> #define int long long using namespace std; int tab[1000007]; int tab2[1000007]; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m, i, j, a, b, t, us, sp, fi, la, w; cin >> t; while(t--){ cin >> n; us=0; a=0; b=0; sp=0; fi=-1; for(i=0; i<n; i++){ cin >> tab[i]; tab2[i]=0; if(i%2){ a+=tab[i]; } else{ b+=tab[i]; } if(tab[i]!=0 && fi==-1){ fi=i; } if(tab[i]!=0){ la=i; } if(sp==0 && tab[i]!=0){ sp++; } if(sp==1 && tab[i]==0){ sp++; } if(sp==2 && tab[i]!=0){ sp++; } } if(abs(a-b)>=2 || sp>=3){ cout << "NIE\n"; continue; } tab[n]=0; tab2[n]=0; w=-1; for(i=fi; i<=la; i++){ tab2[i]=min(tab[i], tab[i+1]); tab[i+1]-=tab2[i]; tab[i]-=tab2[i]; if(tab[i]){ us+=tab[i]; w=i; } /*if(a==0 && tab2[i]!=0 && tab2[i+1]!=0){ us++; tab[i+1]--; }*/ } if(us>=2){ cout << "NIE\n"; continue; } if(w==-1){ a=0; for(i=fi; i<la; i++){ if(tab2[i]==0){ a=a|(i%2+1); } } if(a==3){ cout << "NIE\n"; } else{ cout << "TAK\n"; } } else{ a=(w+1)%2+1; for(i=fi; i<la; i++){ if(tab2[i]==0){ a=a|(i%2+1); if(i>w){ a=3; } } } if(a==3){ cout << "NIE\n"; } else{ cout << "TAK\n"; } } } return 0; } |
English