#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int t;
cin >> t;
for(int j = 0; j < t; j++){
int n;
cin >> n;
vector<ll> v(n);
for(int i = 0; i < n; i++) cin >> v[i];
int l = 0;
int r = 0;
for(int i = 0; i < n; i++) if(v[i] > 0){
l = i;
break;
}
for(int i = n - 1; i >= 0; i--) if(v[i] > 0){
r = i;
break;
}
int org_l = l;
int org_r = r;
bool wyjdz = false;
for(int i = l; i <= r; i++) if(v[i] == 0){
cout << "NIE\n";
wyjdz = true;
break;
}
if(wyjdz) continue;
int ost_r = r;
int ost_l = l;
while(true){
if(l >= r) break;
if(r - l == 1){
ll pom = min(v[l], v[r]);
v[l] -= pom;
v[r] -= pom;
break;
}
if(v[l] > v[l + 1]) break;
if(v[r] > v[r - 1]) break;
if(r - l == 2){
if(v[r] > v[l]) v[r - 1] -= v[r], r--, v[r + 1] = 0;
else v[l + 1] -= v[l], l++, v[l - 1] = 0;
ll pom = min(v[l], v[r]);
v[l] -= pom;
v[r] -= pom;
break;
}
else{
v[l + 1] -= v[l];
v[l] = 0;
v[r - 1] -= v[r];
v[r] = 0;
l++;
r--;
if(v[r] == 0) r--, ost_r = r + 1;
if(v[l] == 0) l++, ost_l = l - 1;
}
}
ll suma = 0;
for(int i = 0; i < n; i++) suma += v[i];
if(suma <= 1){
cout << "TAK\n";
}
else cout << "NIE\n";
//cout << v[0] << ' ' << v[1] <<' ' << v[2] << ' ' << v[3] << ' ' << v[4];
//cout << suma << endl;
}
}
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 | #include<bits/stdc++.h> #define ll long long using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int t; cin >> t; for(int j = 0; j < t; j++){ int n; cin >> n; vector<ll> v(n); for(int i = 0; i < n; i++) cin >> v[i]; int l = 0; int r = 0; for(int i = 0; i < n; i++) if(v[i] > 0){ l = i; break; } for(int i = n - 1; i >= 0; i--) if(v[i] > 0){ r = i; break; } int org_l = l; int org_r = r; bool wyjdz = false; for(int i = l; i <= r; i++) if(v[i] == 0){ cout << "NIE\n"; wyjdz = true; break; } if(wyjdz) continue; int ost_r = r; int ost_l = l; while(true){ if(l >= r) break; if(r - l == 1){ ll pom = min(v[l], v[r]); v[l] -= pom; v[r] -= pom; break; } if(v[l] > v[l + 1]) break; if(v[r] > v[r - 1]) break; if(r - l == 2){ if(v[r] > v[l]) v[r - 1] -= v[r], r--, v[r + 1] = 0; else v[l + 1] -= v[l], l++, v[l - 1] = 0; ll pom = min(v[l], v[r]); v[l] -= pom; v[r] -= pom; break; } else{ v[l + 1] -= v[l]; v[l] = 0; v[r - 1] -= v[r]; v[r] = 0; l++; r--; if(v[r] == 0) r--, ost_r = r + 1; if(v[l] == 0) l++, ost_l = l - 1; } } ll suma = 0; for(int i = 0; i < n; i++) suma += v[i]; if(suma <= 1){ cout << "TAK\n"; } else cout << "NIE\n"; //cout << v[0] << ' ' << v[1] <<' ' << v[2] << ' ' << v[3] << ' ' << v[4]; //cout << suma << endl; } } |
English