#include<iostream>
#define REP(i,n) for(int i=0;i<(n);++i)
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
using namespace std;
const int MAX_N = 1000000;
int A[MAX_N+1], B[MAX_N+1];
int t, n, d, g, k;
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> t;
REP(nTC, t) {
cin >> n;
REP(i, n) {
cin >> A[i];
}
d = g = -1;
REP(i,n) if (A[i]) {
A[i]*=2;
g=i;
if (d < 0) d=i;
}
bool res = true;
FOR(i,d,g) if (!A[i]) {
res = false;
}
if (!res) {
cout << "NIE" << endl;
continue;
}
k = 2;
while (d < g) {
if (A[d] < A[d+1]) {
A[d+1] -= A[d];
A[d] = 0;
d++;
continue;
}
if (A[g] < A[g-1]) {
A[g-1] -= A[g];
A[g] = 0;
g--;
continue;
}
if (A[d] == A[d+1] && k > 0) {
k--;
A[d]--;
continue;
}
if (A[g] == A[g-1] && k > 0) {
k--;
A[g]--;
continue;
}
break;
}
cout << ((d+1==g || (d==g && A[d] == k) ? "TAK" : "NIE")) << endl;
}
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 64 65 66 67 68 69 70 | #include<iostream> #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,a,b) for(int i=(a);i<=(b);++i) using namespace std; const int MAX_N = 1000000; int A[MAX_N+1], B[MAX_N+1]; int t, n, d, g, k; int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> t; REP(nTC, t) { cin >> n; REP(i, n) { cin >> A[i]; } d = g = -1; REP(i,n) if (A[i]) { A[i]*=2; g=i; if (d < 0) d=i; } bool res = true; FOR(i,d,g) if (!A[i]) { res = false; } if (!res) { cout << "NIE" << endl; continue; } k = 2; while (d < g) { if (A[d] < A[d+1]) { A[d+1] -= A[d]; A[d] = 0; d++; continue; } if (A[g] < A[g-1]) { A[g-1] -= A[g]; A[g] = 0; g--; continue; } if (A[d] == A[d+1] && k > 0) { k--; A[d]--; continue; } if (A[g] == A[g-1] && k > 0) { k--; A[g]--; continue; } break; } cout << ((d+1==g || (d==g && A[d] == k) ? "TAK" : "NIE")) << endl; } return 0; } |
English