#include <bits/stdc++.h>
using namespace std;
bool solve(int n, vector<int> datei){
int l = 0, r = n-1;
while(l < n && datei[l] == 0) l++;
while(r >= 0 && datei[r] == 0) r--;
if(l > r) return 0;
bool bad = 0;
for(int i=l; i<=r; i++){
if(datei[i] == 0) bad = 1;
}
if(bad){return 0;}
bool possleft = 1, possright = 1;
while(l != r){
if(datei[l] < datei[l+1] + (1-possleft)){
datei[l+1] -= datei[l];
if(!possleft) datei[l+1]++;
datei[l] = 0;
l++;
continue;
}
if(datei[r] < datei[r-1] + (1-possright)){
datei[r-1] -= datei[r];
if(!possright) datei[r-1]++;
datei[r] = 0;
r--;
continue;
}
if(datei[l] == datei[l+1] && possleft){
datei[l+1] -= datei[l];
datei[l+1]++;
datei[l] = 0;
l++; possleft = 0;
continue;
}
if(datei[r] == datei[r-1] && possright){
datei[r-1] -= datei[r];
datei[r-1]++;
datei[r] = 0;
r--; possright = 0;
continue;
}
return 0;
}
if(l == r && datei[l] == 1) return 1;
return 0;
}
int main(){
ios_base::sync_with_stdio(0);
cout.tie(0); cin.tie(0);
int sets; cin>>sets;
while(sets--){
int n; cin>>n;
vector<int> datei(n); for(auto &e: datei) cin>>e;
if(solve(n, datei)) cout<<"TAK"; else cout<<"NIE";
cout<<'\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 | #include <bits/stdc++.h> using namespace std; bool solve(int n, vector<int> datei){ int l = 0, r = n-1; while(l < n && datei[l] == 0) l++; while(r >= 0 && datei[r] == 0) r--; if(l > r) return 0; bool bad = 0; for(int i=l; i<=r; i++){ if(datei[i] == 0) bad = 1; } if(bad){return 0;} bool possleft = 1, possright = 1; while(l != r){ if(datei[l] < datei[l+1] + (1-possleft)){ datei[l+1] -= datei[l]; if(!possleft) datei[l+1]++; datei[l] = 0; l++; continue; } if(datei[r] < datei[r-1] + (1-possright)){ datei[r-1] -= datei[r]; if(!possright) datei[r-1]++; datei[r] = 0; r--; continue; } if(datei[l] == datei[l+1] && possleft){ datei[l+1] -= datei[l]; datei[l+1]++; datei[l] = 0; l++; possleft = 0; continue; } if(datei[r] == datei[r-1] && possright){ datei[r-1] -= datei[r]; datei[r-1]++; datei[r] = 0; r--; possright = 0; continue; } return 0; } if(l == r && datei[l] == 1) return 1; return 0; } int main(){ ios_base::sync_with_stdio(0); cout.tie(0); cin.tie(0); int sets; cin>>sets; while(sets--){ int n; cin>>n; vector<int> datei(n); for(auto &e: datei) cin>>e; if(solve(n, datei)) cout<<"TAK"; else cout<<"NIE"; cout<<'\n'; } return 0; } |
English