#include <bits/stdc++.h> typedef long long ll; using namespace std; vector<int> l; int n; void odejmuj() { int it = 0; while (it < n && l[it] == 0) ++it; vector<int> lz = l; for (int i = it; i < n; ++i) { if (l[i] == 0 && l[i + 1] > 0 && lz[i] != 0) l[i + 1] -= 1; if (l[i + 1] > 0) { int zi1 = l[i + 1], zi = l[i]; l[i + 1] -= l[i]; l[i] = 0; if (zi1 < zi) return; } } } bool spojny() { bool f = false; if (l[0] > 0) f = true; for (int i = 1; i < n; ++i) if (l[i] > 0 && l[i - 1] == 0 && f) return false; else if (l[i] > 0) f = true; return true; } bool validuj() { bool f = false; for (int i = 0; i < n; ++i) if (l[i] > 1 || l[i] < -1 || (f && (l[i] == 1 || l[i] == -1))) return false; else if (l[i] == 1 || l[i] == -1) f = true; return true; } int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); int t, a; cin >> t; while (t--) { l = {}; cin >> n; for (int i = 0; i < n; ++i) { cin >> a; l.push_back(a); } l.push_back(0); if (!spojny()) { cout << "NIE\n"; continue; } odejmuj(); if (validuj()) cout << "TAK\n"; else cout << "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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #include <bits/stdc++.h> typedef long long ll; using namespace std; vector<int> l; int n; void odejmuj() { int it = 0; while (it < n && l[it] == 0) ++it; vector<int> lz = l; for (int i = it; i < n; ++i) { if (l[i] == 0 && l[i + 1] > 0 && lz[i] != 0) l[i + 1] -= 1; if (l[i + 1] > 0) { int zi1 = l[i + 1], zi = l[i]; l[i + 1] -= l[i]; l[i] = 0; if (zi1 < zi) return; } } } bool spojny() { bool f = false; if (l[0] > 0) f = true; for (int i = 1; i < n; ++i) if (l[i] > 0 && l[i - 1] == 0 && f) return false; else if (l[i] > 0) f = true; return true; } bool validuj() { bool f = false; for (int i = 0; i < n; ++i) if (l[i] > 1 || l[i] < -1 || (f && (l[i] == 1 || l[i] == -1))) return false; else if (l[i] == 1 || l[i] == -1) f = true; return true; } int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); int t, a; cin >> t; while (t--) { l = {}; cin >> n; for (int i = 0; i < n; ++i) { cin >> a; l.push_back(a); } l.push_back(0); if (!spojny()) { cout << "NIE\n"; continue; } odejmuj(); if (validuj()) cout << "TAK\n"; else cout << "NIE\n"; } return 0; } |