#include <bits/stdc++.h>
using namespace std;
int n;
int T[302];
int K[302];
vector<pair<int, int> >P;
bool F(pair<int, int> A, pair<int, int> B)
{
return A.first*B.second<B.first*A.second;
}
int main()
{
/*ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);*/
cin>>n;
for (int i=1; i<=n; ++i)
cin>>T[i];
P.push_back(make_pair(T[1], 1));
K[1]=T[1];
for (int i=2, j=0; i<=n; ++i, j=0){
sort(P.begin(), P.end(), F);
//cout<<P[0].first<<" "<<P[0].second<<"\n";
int k=i;
while (k>0){
//cout<<k<<"\n";
if (P[j].second<=k){
K[i]+=P[j].first;
k-=P[j].second;
}
else j++;
}
if (T[i]>K[i]){
cout<<"NIE\n";
return 0;
}
P.push_back(make_pair(T[i], i));
K[i]=T[i];
}
cout<<"TAK\n";
cout<<n<<"\n";
cout<<K[1]<<" ";
for (int i=2; i<=n; ++i)
cout<<K[i]-K[i-1]<<" ";
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 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 | #include <bits/stdc++.h> using namespace std; int n; int T[302]; int K[302]; vector<pair<int, int> >P; bool F(pair<int, int> A, pair<int, int> B) { return A.first*B.second<B.first*A.second; } int main() { /*ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);*/ cin>>n; for (int i=1; i<=n; ++i) cin>>T[i]; P.push_back(make_pair(T[1], 1)); K[1]=T[1]; for (int i=2, j=0; i<=n; ++i, j=0){ sort(P.begin(), P.end(), F); //cout<<P[0].first<<" "<<P[0].second<<"\n"; int k=i; while (k>0){ //cout<<k<<"\n"; if (P[j].second<=k){ K[i]+=P[j].first; k-=P[j].second; } else j++; } if (T[i]>K[i]){ cout<<"NIE\n"; return 0; } P.push_back(make_pair(T[i], i)); K[i]=T[i]; } cout<<"TAK\n"; cout<<n<<"\n"; cout<<K[1]<<" "; for (int i=2; i<=n; ++i) cout<<K[i]-K[i-1]<<" "; return 0; } |
English