#include <iostream> #include <algorithm> #include <map> #include <queue> #include <list> #include <vector> #include <string> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(); int t; cin>>t; for(int q=0; q<t; q++){ int n; cin>>n; int tab[1000006]={}; int pref[1000006]={}; bool pom=0, tf=1; vector<int> c; for(int i=1; i<=n; i++){ cin>>tab[i]; if(pom&&tab[i]>0){ //cout<<"flag1\n"; tf=0; } if(tab[i]==0&&tab[i-1]>0) pom=1; pref[i]=pref[i-1]+tab[i]; } for(int i=1; i<=n; i++){ if(tab[i]==tab[i-1]+tab[i+1]&&tab[i]>0){ c.push_back(i); } if(tab[i]==tab[i-1]+tab[i+1]+1){ if(pref[n]>tab[i-1]+tab[i]+tab[i+1]){ //cout<<"flag2\n"; tf=0; break; } } if(tab[i]>tab[i-1]+tab[i+1]+1){ //cout<<"flag3\n"; tf=0; break; } } if(c.size()>2){ //cout<<"flag4\n"; tf=0; } if(c.size()==2){ if(pref[c[1]-1]-pref[c[0]]!=c[1]-c[0]-1){ //cout<<"flag5\n"; tf=0; } } if(tf) cout<<"TAK\n"; else cout<<"NIE\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 | #include <iostream> #include <algorithm> #include <map> #include <queue> #include <list> #include <vector> #include <string> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(); int t; cin>>t; for(int q=0; q<t; q++){ int n; cin>>n; int tab[1000006]={}; int pref[1000006]={}; bool pom=0, tf=1; vector<int> c; for(int i=1; i<=n; i++){ cin>>tab[i]; if(pom&&tab[i]>0){ //cout<<"flag1\n"; tf=0; } if(tab[i]==0&&tab[i-1]>0) pom=1; pref[i]=pref[i-1]+tab[i]; } for(int i=1; i<=n; i++){ if(tab[i]==tab[i-1]+tab[i+1]&&tab[i]>0){ c.push_back(i); } if(tab[i]==tab[i-1]+tab[i+1]+1){ if(pref[n]>tab[i-1]+tab[i]+tab[i+1]){ //cout<<"flag2\n"; tf=0; break; } } if(tab[i]>tab[i-1]+tab[i+1]+1){ //cout<<"flag3\n"; tf=0; break; } } if(c.size()>2){ //cout<<"flag4\n"; tf=0; } if(c.size()==2){ if(pref[c[1]-1]-pref[c[0]]!=c[1]-c[0]-1){ //cout<<"flag5\n"; tf=0; } } if(tf) cout<<"TAK\n"; else cout<<"NIE\n"; } return 0; } |