#include <stdio.h>
#include <stdlib.h>
#define N 1000000
int n,s;
int dec[N], inc[N];
int in[N],cn,cp;
int cmpp(int *a, int *b) {
return dec[*a] - dec[*b];
}
int cmpn(int *a, int *b) {
return inc[*b] - inc[*a];
}
int main() {
int i, r = 1;
long long sum;
scanf("%d%d",&n,&s);
sum = s;
for (i = 0; i < n; i++) {
scanf("%d%d",dec+i,inc+i);
sum += inc[i] - dec[i];
if (dec[i]<=inc[i]) in[cp++] = i;
else in[n-++cn] = i;
}
if (sum <= 0) {
puts("NIE");
return 0;
}
qsort(in, cp, sizeof(*in), cmpp);
qsort(in+cp, cn, sizeof(*in), cmpn);
sum = s;
for (i = 0; i < n; i++) r &= sum > dec[in[i]], sum += inc[in[i]] - dec[in[i]];
puts(r?"TAK":"NIE");
if (!r) return 0;
for (i = 0; i < n - 1; i++) printf("%d ",in[i]+1);
printf("%d\n", in[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 | #include <stdio.h> #include <stdlib.h> #define N 1000000 int n,s; int dec[N], inc[N]; int in[N],cn,cp; int cmpp(int *a, int *b) { return dec[*a] - dec[*b]; } int cmpn(int *a, int *b) { return inc[*b] - inc[*a]; } int main() { int i, r = 1; long long sum; scanf("%d%d",&n,&s); sum = s; for (i = 0; i < n; i++) { scanf("%d%d",dec+i,inc+i); sum += inc[i] - dec[i]; if (dec[i]<=inc[i]) in[cp++] = i; else in[n-++cn] = i; } if (sum <= 0) { puts("NIE"); return 0; } qsort(in, cp, sizeof(*in), cmpp); qsort(in+cp, cn, sizeof(*in), cmpn); sum = s; for (i = 0; i < n; i++) r &= sum > dec[in[i]], sum += inc[in[i]] - dec[in[i]]; puts(r?"TAK":"NIE"); if (!r) return 0; for (i = 0; i < n - 1; i++) printf("%d ",in[i]+1); printf("%d\n", in[i]+1); return 0; } |
English