#include <stdio.h>
#include <stdlib.h>
typedef struct el {
int d;
int a;
int i;
} element;
int cmp(const void * a, const void * b)
{
if( (*(element*)a).d -(*(element*)b).d == 0) {
return ( (*(element*)a).a - (*(element*)b).a );
} else {
return ( (*(element*)a).d - (*(element*)b).d );
}
}
int cmp2(const void * a, const void * b)
{
if( (*(element*)b).a -(*(element*)a).a == 0) {
return ( (*(element*)b).d - (*(element*)a).d );
} else {
return ( (*(element*)b).a - (*(element*)a).a );
}
}
element plus[100000];
element minus[100000];
main() {
int n,z,i,d,a;
int p[2];
int plus_c=0;
int minus_c=0;
int min_a=0;
int min_i=0;
long long int pz;
int tak=1;
scanf("%d %lld",&n,&pz);
for(i=1;i<=n;i++) {
scanf("%d %d",&d,&a);
if(d<=a) {
plus[plus_c].i=i;
plus[plus_c].d=d;
plus[plus_c++].a=a;
} else {
minus[minus_c].i=i;
minus[minus_c].d=d;
minus[minus_c++].a=a;
}
}
qsort(plus,plus_c,sizeof(element),cmp);
qsort(minus,minus_c,sizeof(element),cmp2);
for(i=0;i<plus_c;i++) {
pz-=plus[i].d;
if(pz<=0){tak=0;}
pz+=plus[i].a;
}
for(i=0;i<minus_c;i++) {
pz-=minus[i].d;
if(pz<=0){tak=0;}
pz+=minus[i].a;
}
if(tak) {
printf("TAK\n");
for(i=0;i<plus_c;i++) printf("%d ",plus[i].i);
for(i=0;i<minus_c;i++) printf("%d ",minus[i].i);
} else {
printf("NIE\n");
}
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 | #include <stdio.h> #include <stdlib.h> typedef struct el { int d; int a; int i; } element; int cmp(const void * a, const void * b) { if( (*(element*)a).d -(*(element*)b).d == 0) { return ( (*(element*)a).a - (*(element*)b).a ); } else { return ( (*(element*)a).d - (*(element*)b).d ); } } int cmp2(const void * a, const void * b) { if( (*(element*)b).a -(*(element*)a).a == 0) { return ( (*(element*)b).d - (*(element*)a).d ); } else { return ( (*(element*)b).a - (*(element*)a).a ); } } element plus[100000]; element minus[100000]; main() { int n,z,i,d,a; int p[2]; int plus_c=0; int minus_c=0; int min_a=0; int min_i=0; long long int pz; int tak=1; scanf("%d %lld",&n,&pz); for(i=1;i<=n;i++) { scanf("%d %d",&d,&a); if(d<=a) { plus[plus_c].i=i; plus[plus_c].d=d; plus[plus_c++].a=a; } else { minus[minus_c].i=i; minus[minus_c].d=d; minus[minus_c++].a=a; } } qsort(plus,plus_c,sizeof(element),cmp); qsort(minus,minus_c,sizeof(element),cmp2); for(i=0;i<plus_c;i++) { pz-=plus[i].d; if(pz<=0){tak=0;} pz+=plus[i].a; } for(i=0;i<minus_c;i++) { pz-=minus[i].d; if(pz<=0){tak=0;} pz+=minus[i].a; } if(tak) { printf("TAK\n"); for(i=0;i<plus_c;i++) printf("%d ",plus[i].i); for(i=0;i<minus_c;i++) printf("%d ",minus[i].i); } else { printf("NIE\n"); } return 0; } |
English