#include<iostream>
#include<vector>
#include<utility>
#include<algorithm>
#define ll long long
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
int n,k,t;
cin>>t;
for(int T = 0;T<t;++T){
cin>>n;
vector<int>tab(n);
vector<int>tab2;
for(int i = 0;i<n;++i){
cin>>tab[i];
}
int i = 0;
while(i<n && tab[i]==0){i++;}
if(i>0){
tab.erase(tab.begin(),tab.begin()+i);
}
i = tab.size()-1;
while(i>-1 && tab[i]==0){--i;}
if(i<tab.size()-1){
tab.erase(tab.begin()+i+1,tab.end());
}
tab2 = tab;
i = 1;
string ans = "TAK";
string ans2 = "TAK";
if(tab.size()>1){
tab2[1]-=1;
}
else{
if(tab[0]==1){
cout<<"TAK\n";
}
else{
cout<<"NIE\n";
}
continue;
}
while(i<tab.size()){
if(tab[i-1]==0 || tab[i]==0){
ans="NIE";
break;
}
if(tab[i]==tab[i-1]){ //3 3
tab[i]=0;tab[i-1]=0;
i+=2;
continue;
}
if(tab[i-1]>tab[i]){ //2 1 ...
if(i<tab.size()-1 || tab[i-1]-tab[i]>1){
ans="NIE";
break;
}
else{
tab[tab.size()-1]=0;
ans="TAK";
break;
}
}
if (tab[i-1]<tab[i]){ //1 2
tab[i]-=(tab[i-1]-1);
i+=1;
}
}
i = 1;
while(i<tab2.size()){
if(tab2[i-1]==0 || tab2[i]==0){
ans2="NIE";
break;
}
if(tab2[i]==tab2[i-1]){ //3 3
tab2[i]=0;tab2[i-1]=0;
i+=2;
continue;
}
if(tab2[i-1]>tab2[i]){ //2 1 ...
if(i<tab2.size()-1 || tab2[i-1]-tab2[i]>1){
ans2="NIE";
break;
}
else{
tab2[tab2.size()-1]=0;
ans2="TAK";
break;
}
}
if (tab2[i-1]<tab2[i]){ //1 2
tab2[i]-=(tab2[i-1]-1);
i+=1;
}
}
if(ans=="TAK" && tab[tab.size()-1]<2){
ans = "TAK";
}
else{
ans = "NIE";
}
if(ans2=="TAK" && tab2[tab2.size()-1]<2){
ans2 = "TAK";
}
else{
ans2 = "NIE";
}
if(ans=="TAK" || ans2=="TAK"){
cout<<"TAK\n";
}
else{
cout<<"NIE\n";
}
}
}
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | #include<iostream> #include<vector> #include<utility> #include<algorithm> #define ll long long using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int n,k,t; cin>>t; for(int T = 0;T<t;++T){ cin>>n; vector<int>tab(n); vector<int>tab2; for(int i = 0;i<n;++i){ cin>>tab[i]; } int i = 0; while(i<n && tab[i]==0){i++;} if(i>0){ tab.erase(tab.begin(),tab.begin()+i); } i = tab.size()-1; while(i>-1 && tab[i]==0){--i;} if(i<tab.size()-1){ tab.erase(tab.begin()+i+1,tab.end()); } tab2 = tab; i = 1; string ans = "TAK"; string ans2 = "TAK"; if(tab.size()>1){ tab2[1]-=1; } else{ if(tab[0]==1){ cout<<"TAK\n"; } else{ cout<<"NIE\n"; } continue; } while(i<tab.size()){ if(tab[i-1]==0 || tab[i]==0){ ans="NIE"; break; } if(tab[i]==tab[i-1]){ //3 3 tab[i]=0;tab[i-1]=0; i+=2; continue; } if(tab[i-1]>tab[i]){ //2 1 ... if(i<tab.size()-1 || tab[i-1]-tab[i]>1){ ans="NIE"; break; } else{ tab[tab.size()-1]=0; ans="TAK"; break; } } if (tab[i-1]<tab[i]){ //1 2 tab[i]-=(tab[i-1]-1); i+=1; } } i = 1; while(i<tab2.size()){ if(tab2[i-1]==0 || tab2[i]==0){ ans2="NIE"; break; } if(tab2[i]==tab2[i-1]){ //3 3 tab2[i]=0;tab2[i-1]=0; i+=2; continue; } if(tab2[i-1]>tab2[i]){ //2 1 ... if(i<tab2.size()-1 || tab2[i-1]-tab2[i]>1){ ans2="NIE"; break; } else{ tab2[tab2.size()-1]=0; ans2="TAK"; break; } } if (tab2[i-1]<tab2[i]){ //1 2 tab2[i]-=(tab2[i-1]-1); i+=1; } } if(ans=="TAK" && tab[tab.size()-1]<2){ ans = "TAK"; } else{ ans = "NIE"; } if(ans2=="TAK" && tab2[tab2.size()-1]<2){ ans2 = "TAK"; } else{ ans2 = "NIE"; } if(ans=="TAK" || ans2=="TAK"){ cout<<"TAK\n"; } else{ cout<<"NIE\n"; } } } |
English