#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"; } } } |