#include <iostream> using namespace std; int tab[3][100000]; char ch[200000]; void sortuj (int tab[3][100000], int n) { for (int i=1;i<n+1;i++) { int maks=i; for (int j=i+1;j<n+1;j++) { if (tab[2][j]>tab[2][maks]) maks=j; } if (tab[2][i]<tab[2][maks]) swap(tab[2][i],tab[2][maks]); swap(tab[1][i],tab[1][maks]); swap(tab[0][i],tab[0][maks]); } } int main () { int n,z; cin>>n>>z; for (int i=1;i<n+1;i++) { tab[0][i]=i; cin>>tab[1][i]>>tab[2][i]; } sortuj (tab,n); int x=0,zz=n; for (int i=1;i<n+1;i++) { if (i==zz && tab[1][i]>=z) { cout<<"NIE"; return 0; } if (tab[1][i]<z && tab[1][i]!=0) { if (i==zz) --zz; z=z-tab[1][i]+tab[2][i]; if (tab[0][i]!=0) { ch[x]=tab[0][i]+'0'; x=x+2; } tab[0][i]=0; tab[1][i]=0; tab[2][i]=0; i=1; } } cout<<"TAK"<<endl; for (int i=0;i<x-1;i++) cout<<ch[i]; 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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include <iostream> using namespace std; int tab[3][100000]; char ch[200000]; void sortuj (int tab[3][100000], int n) { for (int i=1;i<n+1;i++) { int maks=i; for (int j=i+1;j<n+1;j++) { if (tab[2][j]>tab[2][maks]) maks=j; } if (tab[2][i]<tab[2][maks]) swap(tab[2][i],tab[2][maks]); swap(tab[1][i],tab[1][maks]); swap(tab[0][i],tab[0][maks]); } } int main () { int n,z; cin>>n>>z; for (int i=1;i<n+1;i++) { tab[0][i]=i; cin>>tab[1][i]>>tab[2][i]; } sortuj (tab,n); int x=0,zz=n; for (int i=1;i<n+1;i++) { if (i==zz && tab[1][i]>=z) { cout<<"NIE"; return 0; } if (tab[1][i]<z && tab[1][i]!=0) { if (i==zz) --zz; z=z-tab[1][i]+tab[2][i]; if (tab[0][i]!=0) { ch[x]=tab[0][i]+'0'; x=x+2; } tab[0][i]=0; tab[1][i]=0; tab[2][i]=0; i=1; } } cout<<"TAK"<<endl; for (int i=0;i<x-1;i++) cout<<ch[i]; return 0; } |