#include<bits/stdc++.h>
using namespace std;
int n,T[1000];
vector <int> V;
int findmax (int n);
int main()
{
cin >> n;
for (int i = 1 ; i <= n ; i++)
{
cin >> T[i];
}
int dasie = 1;
V.push_back(T[1]);
for (int i = 2 ; i <= n ; i++)
{
if(T[i] - T[i-1] > T[1])
dasie = 0;
}
if(dasie == 0)
{
cout << "NIE";
return 0;
}
for (int i = 2 ; i <= n ; i++)
{
V.push_back(T[i] - T[i-1]);
}
for (int i = 2 ; i <= n ; i++)
{
if(findmax(i) != T[i])
{
cout <<"NIE";
return 0;
}
}
cout << "TAK\n"<<V.size()<<"\n";
for (int i = 0 ; i < V.size() ; i++)
cout << V[i]<<" ";
}
int findmax (int n)
{
int ob = 0;
for (int i = 0 ; i < n ; i++)
ob += V[i];
int maxw = ob;
for (int i = n, lewy = 0 ; i < V.size() ; i++,lewy++)
{
ob += V[i];
ob -= V[lewy];
maxw = max(maxw,ob);
}
return maxw;
}
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 | #include<bits/stdc++.h> using namespace std; int n,T[1000]; vector <int> V; int findmax (int n); int main() { cin >> n; for (int i = 1 ; i <= n ; i++) { cin >> T[i]; } int dasie = 1; V.push_back(T[1]); for (int i = 2 ; i <= n ; i++) { if(T[i] - T[i-1] > T[1]) dasie = 0; } if(dasie == 0) { cout << "NIE"; return 0; } for (int i = 2 ; i <= n ; i++) { V.push_back(T[i] - T[i-1]); } for (int i = 2 ; i <= n ; i++) { if(findmax(i) != T[i]) { cout <<"NIE"; return 0; } } cout << "TAK\n"<<V.size()<<"\n"; for (int i = 0 ; i < V.size() ; i++) cout << V[i]<<" "; } int findmax (int n) { int ob = 0; for (int i = 0 ; i < n ; i++) ob += V[i]; int maxw = ob; for (int i = n, lewy = 0 ; i < V.size() ; i++,lewy++) { ob += V[i]; ob -= V[lewy]; maxw = max(maxw,ob); } return maxw; } |
English