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