#include <bits/stdc++.h>
using namespace std;
#define rep(a, b) for (int a = 0; a < (b); a++)
#define rep1(a, b) for (int a = 1; a <= (b); a++)
#define all(x) (x).begin(), (x).end()
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const int MOD = 1e9 + 7;
#define LOCAL false
const int LIM = 1e6 + 7;
int n;
ll nums[LIM];
int l;
bool check() {
int bz = 0;
rep(i, n) bz += (nums[i]==0 && nums[i+1] != 0);
if (bz > 1) return false;
int idx = 1;
while (nums[idx] == 0) idx++;
ll cur = nums[idx];
idx++;
while (nums[idx] != 0) {
cur = nums[idx]-cur+1;
if (cur < 0 || (cur == 0 && nums[idx+1] != 0)) return false;
idx++;
}
return cur == 0 || cur == 1;
}
void solve() {
cin >> n;
rep1(i, n) cin >> nums[i];
l = 1;
while (nums[l] == 0) l++;
bool ok = false;
ok |= check();
if (nums[l+1] != 0) nums[l+1]--;
ok |= check();
if (nums[l+1] != 0) nums[l+1]++;
cout << (ok ? "TAK" : "NIE") << "\n";
rep1(i, n) nums[i] = 0;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
if (LOCAL) {
ignore=freopen("io/in", "r", stdin);
ignore=freopen("io/out", "w", stdout);
}
int t;
cin >> t;
while (t--) solve();
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 | #include <bits/stdc++.h> using namespace std; #define rep(a, b) for (int a = 0; a < (b); a++) #define rep1(a, b) for (int a = 1; a <= (b); a++) #define all(x) (x).begin(), (x).end() using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; const int MOD = 1e9 + 7; #define LOCAL false const int LIM = 1e6 + 7; int n; ll nums[LIM]; int l; bool check() { int bz = 0; rep(i, n) bz += (nums[i]==0 && nums[i+1] != 0); if (bz > 1) return false; int idx = 1; while (nums[idx] == 0) idx++; ll cur = nums[idx]; idx++; while (nums[idx] != 0) { cur = nums[idx]-cur+1; if (cur < 0 || (cur == 0 && nums[idx+1] != 0)) return false; idx++; } return cur == 0 || cur == 1; } void solve() { cin >> n; rep1(i, n) cin >> nums[i]; l = 1; while (nums[l] == 0) l++; bool ok = false; ok |= check(); if (nums[l+1] != 0) nums[l+1]--; ok |= check(); if (nums[l+1] != 0) nums[l+1]++; cout << (ok ? "TAK" : "NIE") << "\n"; rep1(i, n) nums[i] = 0; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); if (LOCAL) { ignore=freopen("io/in", "r", stdin); ignore=freopen("io/out", "w", stdout); } int t; cin >> t; while (t--) solve(); return 0; } |
English