#include <bits/stdc++.h>
using namespace std;
int n,i,j,cnt,b[303];
long long cur,r[100100];
bool ok[303];
int main() {
scanf("%d",&n);
for (i=0; i<n; i++) scanf("%d",&b[i]);
for (i=0; i<100000 && cnt<n; i++) {
r[i]=b[0];
for (cur=0, j=1; j<n && i>=j; j++) {
cur+=r[i-j];
r[i]=min(r[i],b[j]-cur);
}
for (cur=j=0; j<n && i>=j; j++) {
cur+=r[i-j];
if (cur==b[j] && !ok[j]) {
ok[j]=true;
++cnt;
}
}
}
if (cnt==n) {
puts("TAK");
printf("%d\n",i);
for (j=0; j<i; j++) printf("%lld%c",r[j],(j==i-1)?'\n':' ');
} else puts("NIE");
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 | #include <bits/stdc++.h> using namespace std; int n,i,j,cnt,b[303]; long long cur,r[100100]; bool ok[303]; int main() { scanf("%d",&n); for (i=0; i<n; i++) scanf("%d",&b[i]); for (i=0; i<100000 && cnt<n; i++) { r[i]=b[0]; for (cur=0, j=1; j<n && i>=j; j++) { cur+=r[i-j]; r[i]=min(r[i],b[j]-cur); } for (cur=j=0; j<n && i>=j; j++) { cur+=r[i-j]; if (cur==b[j] && !ok[j]) { ok[j]=true; ++cnt; } } } if (cnt==n) { puts("TAK"); printf("%d\n",i); for (j=0; j<i; j++) printf("%lld%c",r[j],(j==i-1)?'\n':' '); } else puts("NIE"); return 0; } |
English