#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
//#include <fstream>
long long t,n,a;
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(NULL);
std::cin>>t;
//std::fstream aa("./wyl/all.out");
for(int test=0;test<t;test++){
std::cin>>n;
std::vector<int> war;
long long odd=0;
long long even=0;
bool fail=false;
bool fin=false;
for(int i=0;i<n;i++){
std::cin>>a;
if(a!=0){
war.emplace_back(a);
if(fin)
fail=true;
}
if(a==0&&war.size()>0)
fin=true;
if(i%2)
odd+=a;
else
even+=a;
}
bool parz[2]={false,false};
fin=false;
long long last=war[0];
for(int i=1;i<war.size();i++){
last=war[i]-last;
if(last==0)
parz[i%2]=true;
if(parz[0]&&parz[1])
fin=true;
if(last==-1){
if(!parz[(i+1)%2])
fin=true;
else
fail=true;
}
if(last<-1)
fail=true;
if(fin && i!=war.size()-1)
fail=true;
}
if(last>0 &&parz[(war.size()-1)%2]==true)
fail=true;
//war.emplace_back(0);
//for(int i=1;i<war.size()-1;i++)
// if(war[i]>war[i-1]+war[i+1]&&(i>2||i<war.size()-3))
// fail=true;
//std::string line;
//aa>>line;
//std::cout<<"xx "<<line<<std::endl;
if((std::abs(odd-even)>1 ||fail) /*xor line[0]=='N'*/){
std::cout<<"NIE\n";
//for(int i=0;i<war.size();i++)
// std::cout<<war[i]<<std::endl;
}
else
std::cout<<"TAK\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 | #include <iostream> #include <vector> #include <algorithm> #include <iomanip> //#include <fstream> long long t,n,a; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(NULL); std::cin>>t; //std::fstream aa("./wyl/all.out"); for(int test=0;test<t;test++){ std::cin>>n; std::vector<int> war; long long odd=0; long long even=0; bool fail=false; bool fin=false; for(int i=0;i<n;i++){ std::cin>>a; if(a!=0){ war.emplace_back(a); if(fin) fail=true; } if(a==0&&war.size()>0) fin=true; if(i%2) odd+=a; else even+=a; } bool parz[2]={false,false}; fin=false; long long last=war[0]; for(int i=1;i<war.size();i++){ last=war[i]-last; if(last==0) parz[i%2]=true; if(parz[0]&&parz[1]) fin=true; if(last==-1){ if(!parz[(i+1)%2]) fin=true; else fail=true; } if(last<-1) fail=true; if(fin && i!=war.size()-1) fail=true; } if(last>0 &&parz[(war.size()-1)%2]==true) fail=true; //war.emplace_back(0); //for(int i=1;i<war.size()-1;i++) // if(war[i]>war[i-1]+war[i+1]&&(i>2||i<war.size()-3)) // fail=true; //std::string line; //aa>>line; //std::cout<<"xx "<<line<<std::endl; if((std::abs(odd-even)>1 ||fail) /*xor line[0]=='N'*/){ std::cout<<"NIE\n"; //for(int i=0;i<war.size();i++) // std::cout<<war[i]<<std::endl; } else std::cout<<"TAK\n"; } } |
English