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