#include <iostream>
#include <vector>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
vector<int> wek(n);
for (int i = 0; i < n; i++)
cin >> wek[i];
bool odp = 1;
bool czy1 = 0;
for (int i = 1; i < n; i++)
{
int roz;
if (i == n - 1)
roz = min(wek[i - 1], max(0, wek[i]));
else if (wek[i+1]==0)
roz = min(wek[i - 1], max(0, wek[i]));
else
roz = min(wek[i - 1], max(0, wek[i]-1));
if (wek[i-1] - roz >= 2)
odp = 0;
if (wek[i-1] - roz == 1 and czy1)
odp = 0;
if (wek[i-1] - roz == 1)
czy1 = 1;
wek[i] -= roz;
wek[i - 1] -= roz;
}
//for (auto i : wek)
//cout << i << ' ';
if (wek.back() >= 2)
odp = 0;
if (n != 1)
if (wek.back() == 1 and wek[wek.size() - 2] == 1)
wek.back()--;
if (wek.back() == 1 and czy1)
odp = 0;
if (odp)
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 | #include <iostream> #include <vector> using namespace std; int main() { int t; cin >> t; while (t--) { int n; cin >> n; vector<int> wek(n); for (int i = 0; i < n; i++) cin >> wek[i]; bool odp = 1; bool czy1 = 0; for (int i = 1; i < n; i++) { int roz; if (i == n - 1) roz = min(wek[i - 1], max(0, wek[i])); else if (wek[i+1]==0) roz = min(wek[i - 1], max(0, wek[i])); else roz = min(wek[i - 1], max(0, wek[i]-1)); if (wek[i-1] - roz >= 2) odp = 0; if (wek[i-1] - roz == 1 and czy1) odp = 0; if (wek[i-1] - roz == 1) czy1 = 1; wek[i] -= roz; wek[i - 1] -= roz; } //for (auto i : wek) //cout << i << ' '; if (wek.back() >= 2) odp = 0; if (n != 1) if (wek.back() == 1 and wek[wek.size() - 2] == 1) wek.back()--; if (wek.back() == 1 and czy1) odp = 0; if (odp) cout << "TAK\n"; else cout << "NIE\n"; } } |
English