#include <bits/stdc++.h>
using namespace std;
void solve() {
long long n;
cin >> n;
vector<long long> a(n);
for (long long i = 0; i < n; i++) {
cin >> a[i];
}
vector<long long> trimmed;
bool zero_on_end = false;
for (long long i = 0; i < a.size(); i++) {
if (a[i] == 0) {
if(trimmed.size() == 0) continue;
zero_on_end = true;
} else if (zero_on_end) {
cout << "NIE\n";
return;
} else {
trimmed.push_back(a[i]);
}
}
if (trimmed.size() == 1) {
string msg = trimmed[0] == 1 ? "TAK" : "NIE";
cout << msg << endl;
return;
}
long long used = 0;
bool success = true;
for (long long i = 0; i < trimmed.size() - 2; i++) {
if (trimmed[i] - used <= trimmed[i + 1]) {
used = trimmed[i] - used - 1;
} else {
success = false;
break;
}
}
if (success && (trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] || trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] + 1)) {
cout << "TAK\n";
return;
}
trimmed[1]--;
used = 0;
success = true;
for (long long i = 0; i < trimmed.size() - 2; i++) {
if (trimmed[i] - used <= trimmed[i + 1]) {
used = trimmed[i] - used - 1;
} else {
success = false;
break;
}
}
if (success && (trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] || trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] + 1)) {
cout << "TAK\n";
return;
}
cout << "NIE\n";
return;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
for (int i = 0; i < t; i++) {
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <bits/stdc++.h> using namespace std; void solve() { long long n; cin >> n; vector<long long> a(n); for (long long i = 0; i < n; i++) { cin >> a[i]; } vector<long long> trimmed; bool zero_on_end = false; for (long long i = 0; i < a.size(); i++) { if (a[i] == 0) { if(trimmed.size() == 0) continue; zero_on_end = true; } else if (zero_on_end) { cout << "NIE\n"; return; } else { trimmed.push_back(a[i]); } } if (trimmed.size() == 1) { string msg = trimmed[0] == 1 ? "TAK" : "NIE"; cout << msg << endl; return; } long long used = 0; bool success = true; for (long long i = 0; i < trimmed.size() - 2; i++) { if (trimmed[i] - used <= trimmed[i + 1]) { used = trimmed[i] - used - 1; } else { success = false; break; } } if (success && (trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] || trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] + 1)) { cout << "TAK\n"; return; } trimmed[1]--; used = 0; success = true; for (long long i = 0; i < trimmed.size() - 2; i++) { if (trimmed[i] - used <= trimmed[i + 1]) { used = trimmed[i] - used - 1; } else { success = false; break; } } if (success && (trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] || trimmed[trimmed.size() - 2] - used == trimmed[trimmed.size() - 1] + 1)) { cout << "TAK\n"; return; } cout << "NIE\n"; return; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int t; cin >> t; for (int i = 0; i < t; i++) { solve(); } return 0; } |
English