// boh.cpp : Defines the entry point for the console application.
//
#include "stdio.h"
#include "stdlib.h"
#define NN 100000
struct ppp {
int d;
int a;
int s;
} pp[NN+1];
int ii[NN+1];
int i, k, n, z, a, d;
int debug = 0;
long long s;
int
compii(const void *x, const void *y)
{
int ix, iy, s, r;
ix = *((int *) x);
iy = *((int *) y);
s = pp[ix].s;
r = pp[iy].s - s;
if (r==0)
{
if (s>0)
r = pp[ix].d - pp[iy].d;
else
r = pp[iy].a - pp[ix].a;
}
return r;
}
void
boh()
{
scanf("%d%d", &n, &z);
for (i=1; i<=n; i++)
{
ii[i] = i;
scanf("%d%d", &d, &a);
pp[i].d = d;
pp[i].a = a;
a -= d;
if (a)
a = (a<0) ? -1 : 1;
pp[i].s = a;
}
qsort(ii+1, n, sizeof(int), compii);
if (debug)
for (i=1; i<=n; i++)
{
k = ii[i];
printf("%d -> %d %d\n", k, pp[k].d, pp[k].a);
}
s = z;
for (i=1; i<=n; i++)
{
k = ii[i];
s -= pp[k].d;
if (s<=0)
n = 0;
s += pp[k].a;
}
printf("%s\n", n==0 ? "NIE" : "TAK");
for (i=1; i<=n; i++)
printf("%d ", ii[i]);
printf("\n");
}
int
main()
{
boh();
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 83 84 85 86 87 88 89 90 91 92 93 94 | // boh.cpp : Defines the entry point for the console application. // #include "stdio.h" #include "stdlib.h" #define NN 100000 struct ppp { int d; int a; int s; } pp[NN+1]; int ii[NN+1]; int i, k, n, z, a, d; int debug = 0; long long s; int compii(const void *x, const void *y) { int ix, iy, s, r; ix = *((int *) x); iy = *((int *) y); s = pp[ix].s; r = pp[iy].s - s; if (r==0) { if (s>0) r = pp[ix].d - pp[iy].d; else r = pp[iy].a - pp[ix].a; } return r; } void boh() { scanf("%d%d", &n, &z); for (i=1; i<=n; i++) { ii[i] = i; scanf("%d%d", &d, &a); pp[i].d = d; pp[i].a = a; a -= d; if (a) a = (a<0) ? -1 : 1; pp[i].s = a; } qsort(ii+1, n, sizeof(int), compii); if (debug) for (i=1; i<=n; i++) { k = ii[i]; printf("%d -> %d %d\n", k, pp[k].d, pp[k].a); } s = z; for (i=1; i<=n; i++) { k = ii[i]; s -= pp[k].d; if (s<=0) n = 0; s += pp[k].a; } printf("%s\n", n==0 ? "NIE" : "TAK"); for (i=1; i<=n; i++) printf("%d ", ii[i]); printf("\n"); } int main() { boh(); return 0; } |
English