#include <iostream>
using namespace std;
int main()
{
long int n, z, d, a, licz;
long int da[100001][4];
long int temp[1][4];
cin >> n >> z;
long int suma=0;
long int maxDD=0;
for (long int i=0;i<n;i++){
cin >> d >> a;
da[i][0]=d;
da[i][1]=a;
da[i][2]=da[i][1]-da[i][0];
da[i][3]=i+1;
if(da[i][2]<maxDD){
maxDD=da[i][2];
}
suma=suma+da[i][2];
}
if(suma>=maxDD){
cout << "TAK" << '\n';
}else{
cout << "NIE" << '\n';
return 0;
}
licz = 0;
while (licz<n){
if(da[licz][2]>=0){
if(da[licz][0]<=z){
cout << da[licz][3] << ' ';
for (long int j=licz;j<n;j++){
da[licz][0]=da[licz+1][0];
da[licz][1]=da[licz+1][1];
da[licz][2]=da[licz+1][2];
da[licz][3]=da[licz+1][3];
}
n=n-1;
licz++;
z=z-da[licz][0]+da[licz][1];
continue;
} else {
temp[licz][0]=da[licz][0];
temp[licz][1]=da[licz][1];
temp[licz][2]=da[licz][2];
temp[licz][3]=da[licz][3];
da[licz][0]=da[n-1][0];
da[licz][1]=da[n-1][1];
da[licz][2]=da[n-1][2];
da[licz][3]=da[n-1][3];
da[n-1][0]=temp[licz][0];
da[n-1][1]=temp[licz][1];
da[n-1][2]=temp[licz][2];
da[n-1][3]=temp[licz][3];
continue;
}
} else {
licz++;
}
}
licz = 0;
long int maks=0;
long int nr_maks=-1;
while (licz<n){
for(long int m=0;m<n;m++){
if(da[m][0]>maks){
maks=da[m][0];
nr_maks=m;
}
}
cout << da[nr_maks][3] << ' ';
da[nr_maks][0]=0;
maks=0;
nr_maks=-1;
licz++;
}
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 72 73 74 75 76 77 78 79 80 81 82 | #include <iostream> using namespace std; int main() { long int n, z, d, a, licz; long int da[100001][4]; long int temp[1][4]; cin >> n >> z; long int suma=0; long int maxDD=0; for (long int i=0;i<n;i++){ cin >> d >> a; da[i][0]=d; da[i][1]=a; da[i][2]=da[i][1]-da[i][0]; da[i][3]=i+1; if(da[i][2]<maxDD){ maxDD=da[i][2]; } suma=suma+da[i][2]; } if(suma>=maxDD){ cout << "TAK" << '\n'; }else{ cout << "NIE" << '\n'; return 0; } licz = 0; while (licz<n){ if(da[licz][2]>=0){ if(da[licz][0]<=z){ cout << da[licz][3] << ' '; for (long int j=licz;j<n;j++){ da[licz][0]=da[licz+1][0]; da[licz][1]=da[licz+1][1]; da[licz][2]=da[licz+1][2]; da[licz][3]=da[licz+1][3]; } n=n-1; licz++; z=z-da[licz][0]+da[licz][1]; continue; } else { temp[licz][0]=da[licz][0]; temp[licz][1]=da[licz][1]; temp[licz][2]=da[licz][2]; temp[licz][3]=da[licz][3]; da[licz][0]=da[n-1][0]; da[licz][1]=da[n-1][1]; da[licz][2]=da[n-1][2]; da[licz][3]=da[n-1][3]; da[n-1][0]=temp[licz][0]; da[n-1][1]=temp[licz][1]; da[n-1][2]=temp[licz][2]; da[n-1][3]=temp[licz][3]; continue; } } else { licz++; } } licz = 0; long int maks=0; long int nr_maks=-1; while (licz<n){ for(long int m=0;m<n;m++){ if(da[m][0]>maks){ maks=da[m][0]; nr_maks=m; } } cout << da[nr_maks][3] << ' '; da[nr_maks][0]=0; maks=0; nr_maks=-1; licz++; } return 0; } |
English