#include <bits/stdc++.h>
using namespace std;
#define _DEBUG
#ifdef _DEBUG
template<typename T1, typename T2> auto& operator<<(ostream& o, pair<T1, T2> a) { return o << "(" << a.first << ", " << a.second << ")"; }
template<typename T, typename OS> auto& operator<<(OS& o, T a) { o << "{"; for (auto b : a) o << b << ", "; return o << "}"; }
#define dbg(x...) cerr << "[" #x "]: ", [](auto... args) { ((cerr << args << ", "),...) << "\n"; }(x)
#else
#define dbg(...)
#endif
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
using ll = long long;
using ld = long double;
using pll = pair<ll, ll>;
using vi = vector<int>;
bool solve(ll n, vector<ll>& v) {
vector<ll> c; ll m = 0;
for(ll i = 0 ; i < n ; ++i) if(v[i] != 0) m++;
for(ll i = 0 ; i < n ; ++i) {
if(sz(c)>0 && v[i] == 0) break;
if(v[i] != 0) c.emplace_back(v[i]);
}
if(sz(c) != m) return false;
if(m == 0) return true;
if(m == 1) {
if(c[0] > 1) return false;
return true;
}
ll cur = c[0];
bool f = true;
for(ll i = 1 ; i < m ; ++i) {
cur = c[i] - cur + 1;
if(cur == 0 && i != m-1) {
f = false; break;
}
if(cur < 0) {
f = false; break;
}
}
if(f && cur < 2) return true;
c[1]--;
cur = c[0];
for(ll i = 1 ; i < m ; ++i) {
cur = c[i] - cur + 1;
if(cur == 0 && i != m-1) return false;
if(cur < 0) return false;
}
if(cur < 2) return true;
return false;
}
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
ll t;
cin >> t;
while(t--) {
ll n;
cin >> n;
vector<ll> v(n);
for(ll i = 0 ; i < n ; ++i) cin >> v[i];
if(solve(n, v)) 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 | #include <bits/stdc++.h> using namespace std; #define _DEBUG #ifdef _DEBUG template<typename T1, typename T2> auto& operator<<(ostream& o, pair<T1, T2> a) { return o << "(" << a.first << ", " << a.second << ")"; } template<typename T, typename OS> auto& operator<<(OS& o, T a) { o << "{"; for (auto b : a) o << b << ", "; return o << "}"; } #define dbg(x...) cerr << "[" #x "]: ", [](auto... args) { ((cerr << args << ", "),...) << "\n"; }(x) #else #define dbg(...) #endif #define sz(x) ((int)(x).size()) #define all(x) (x).begin(), (x).end() #define F first #define S second using ll = long long; using ld = long double; using pll = pair<ll, ll>; using vi = vector<int>; bool solve(ll n, vector<ll>& v) { vector<ll> c; ll m = 0; for(ll i = 0 ; i < n ; ++i) if(v[i] != 0) m++; for(ll i = 0 ; i < n ; ++i) { if(sz(c)>0 && v[i] == 0) break; if(v[i] != 0) c.emplace_back(v[i]); } if(sz(c) != m) return false; if(m == 0) return true; if(m == 1) { if(c[0] > 1) return false; return true; } ll cur = c[0]; bool f = true; for(ll i = 1 ; i < m ; ++i) { cur = c[i] - cur + 1; if(cur == 0 && i != m-1) { f = false; break; } if(cur < 0) { f = false; break; } } if(f && cur < 2) return true; c[1]--; cur = c[0]; for(ll i = 1 ; i < m ; ++i) { cur = c[i] - cur + 1; if(cur == 0 && i != m-1) return false; if(cur < 0) return false; } if(cur < 2) return true; return false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll t; cin >> t; while(t--) { ll n; cin >> n; vector<ll> v(n); for(ll i = 0 ; i < n ; ++i) cin >> v[i]; if(solve(n, v)) cout << "TAK\n"; else cout << "NIE\n"; } return 0; } |
English