#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, t;
int tab[1000005];
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> t;
while (t--)
{
bool res = true;
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> tab[i];
}
tab[n+1] = 0;
bool jed = false;
for (int i = 1; i <= n; ++i)
{
if (tab[i] > 0 && tab[i-1] == 0)
{
if (jed) res = false;
jed = true;
}
}
if (jed == false) res = false;
vector <int> val;
for (int i = 1; i <= n; ++i)
{
if (tab[i] > 0) val.push_back(tab[i]);
}
jed = false;
val.push_back(0);
int lst = 0;
bool kon = false;
for (int i = 0; i < val.size()-1; ++i)
{
if (kon) --lst;
if (jed && (lst == 0)) ++lst;
val[i] -= lst;
if (val[i] < 0)
{
res = false;
}
if (val[i] > val[i+1]+1)
{
res = false;
}
if (val[i] == 0 && i != val.size()-2)
{
if (kon) res = false;
kon = true;
++val[i];
}
if (val[i] == val[i+1]+1)
{
if (jed) res = false;
jed = true;
kon = true;
--val[i];
}
lst = val[i];
}
if (!(jed && kon)) if (kon) res = false;
if (val[val.size()-2] > 0) res = false;
if (res) cout << "TAK\n";
else cout << "NIE\n";
}
}
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 | #include <bits/stdc++.h> #define int long long using namespace std; int n, t; int tab[1000005]; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> t; while (t--) { bool res = true; cin >> n; for (int i = 1; i <= n; ++i) { cin >> tab[i]; } tab[n+1] = 0; bool jed = false; for (int i = 1; i <= n; ++i) { if (tab[i] > 0 && tab[i-1] == 0) { if (jed) res = false; jed = true; } } if (jed == false) res = false; vector <int> val; for (int i = 1; i <= n; ++i) { if (tab[i] > 0) val.push_back(tab[i]); } jed = false; val.push_back(0); int lst = 0; bool kon = false; for (int i = 0; i < val.size()-1; ++i) { if (kon) --lst; if (jed && (lst == 0)) ++lst; val[i] -= lst; if (val[i] < 0) { res = false; } if (val[i] > val[i+1]+1) { res = false; } if (val[i] == 0 && i != val.size()-2) { if (kon) res = false; kon = true; ++val[i]; } if (val[i] == val[i+1]+1) { if (jed) res = false; jed = true; kon = true; --val[i]; } lst = val[i]; } if (!(jed && kon)) if (kon) res = false; if (val[val.size()-2] > 0) res = false; if (res) cout << "TAK\n"; else cout << "NIE\n"; } } |
English