#include <bits/stdc++.h>
using namespace std;
//schody ahh zadanie
int main(){
cin.tie(0)->sync_with_stdio(0);
int t; cin >> t;
while(t--){
int n; cin >> n;
vector<int>vect = {0};
vector<int>in(n+9, 0), out(n+9, 0);
bool f = 0, zero = 0, last = 0;
for(auto i = 1; i <= n; ++i){
int x; cin >> x;
if(x){
if(zero) last = 1;
f = 1;
vect.push_back(x);
}
else if(f) zero = 1;
}
if(last){
cout << "NIE\n";
continue;
}
n = vect.size();
int niga = 0;
for(auto i = 1; i < n-1; ++i){
int x = vect[i];
int left = min(x-in[i], vect[i+1]);
in[i] += left; out[i+1] += left;
left = min(x-out[i], vect[i+1]);
if(left == 0 && x){
in[i-1]--;
in[i+1]++;
}
out[i] += left; in[i+1] += left;
}
int dif = 0;
for(auto i = 1; i < n; ++i){
dif += 2*vect[i]-in[i]-out[i];
}
cout << (dif <= 2 ? "TAK\n" : "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 | #include <bits/stdc++.h> using namespace std; //schody ahh zadanie int main(){ cin.tie(0)->sync_with_stdio(0); int t; cin >> t; while(t--){ int n; cin >> n; vector<int>vect = {0}; vector<int>in(n+9, 0), out(n+9, 0); bool f = 0, zero = 0, last = 0; for(auto i = 1; i <= n; ++i){ int x; cin >> x; if(x){ if(zero) last = 1; f = 1; vect.push_back(x); } else if(f) zero = 1; } if(last){ cout << "NIE\n"; continue; } n = vect.size(); int niga = 0; for(auto i = 1; i < n-1; ++i){ int x = vect[i]; int left = min(x-in[i], vect[i+1]); in[i] += left; out[i+1] += left; left = min(x-out[i], vect[i+1]); if(left == 0 && x){ in[i-1]--; in[i+1]++; } out[i] += left; in[i+1] += left; } int dif = 0; for(auto i = 1; i < n; ++i){ dif += 2*vect[i]-in[i]-out[i]; } cout << (dif <= 2 ? "TAK\n" : "NIE\n"); } } |
English