#include <bits/stdc++.h>
using namespace std;
bool solve(int n, vector <int> &a) {
int l = 0, r = n - 1;
while (!a[l]) l++;
while (!a[r]) r--;
for (int phase = 0; phase <= 1; phase++) {
while (l < r && a[l] < a[l + 1]) {
a[l + 1] -= a[l];
l++;
}
while (l < r && a[r] < a[r - 1]) {
a[r - 1] -= a[r];
r--;
}
for (int i = l + 1; i <= r; i++) {
a[i]++;
}
}
return l == r && a[l] == 1;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector <int> a(n);
for (int &ai : a) {
cin >> ai;
}
cout << (solve(n, a) ? "TAK" : "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 | #include <bits/stdc++.h> using namespace std; bool solve(int n, vector <int> &a) { int l = 0, r = n - 1; while (!a[l]) l++; while (!a[r]) r--; for (int phase = 0; phase <= 1; phase++) { while (l < r && a[l] < a[l + 1]) { a[l + 1] -= a[l]; l++; } while (l < r && a[r] < a[r - 1]) { a[r - 1] -= a[r]; r--; } for (int i = l + 1; i <= r; i++) { a[i]++; } } return l == r && a[l] == 1; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while (t--) { int n; cin >> n; vector <int> a(n); for (int &ai : a) { cin >> ai; } cout << (solve(n, a) ? "TAK" : "NIE") << '\n'; } return 0; } |
English