#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; } |