#include<cstdio>
#include<algorithm>
using namespace std;
typedef struct
{
int poz;
int kos;
int zys;
}wzo;
bool ros(wzo x,wzo y)
{
if (x.kos<y.kos) return true;
else return false;
}
int main()
{
int n,hp;
scanf("%d%d",&n,&hp);
bool rez=true;
int wyn[n];
wzo w[n];
wzo m[n];
int mn=0,wi=0;
for (int i=0; i<n; i++)
{
int a,b;
scanf("%d%d",&a,&b);
if (a>b)
{
m[mn].poz=i;
m[mn].kos=a;
m[mn].zys=b;
mn++;
} else
{
w[wi].poz=i;
w[wi].kos=a;
w[wi].zys=b;
wi++;
}
}
sort (w, w+wi, ros);
sort (m, m+mn, ros);
int k=0;
for (int i=0; i<wi; i++)
{
if (hp-w[i].kos<=0)
{
rez=false;
goto stop;
} else
{
wyn[k]=w[i].poz+1;
k++;
}
hp-=w[i].kos;
hp+=w[i].zys;
}
for (int i=mn-1; i>=0; i--)
{
if (hp-m[i].kos<=0)
{
rez=false;
goto stop;
} else
{
wyn[k]=m[i].poz+1;
k++;
}
hp-=m[i].kos;
hp+=m[i].zys;
}
stop:
if (rez==false) printf("NIE\n");
else
{
printf("TAK\n");
for (int i=0; i<n; i++)
{
if (i==n-1) printf("%d\n",wyn[i]);
else printf("%d ",wyn[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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | #include<cstdio> #include<algorithm> using namespace std; typedef struct { int poz; int kos; int zys; }wzo; bool ros(wzo x,wzo y) { if (x.kos<y.kos) return true; else return false; } int main() { int n,hp; scanf("%d%d",&n,&hp); bool rez=true; int wyn[n]; wzo w[n]; wzo m[n]; int mn=0,wi=0; for (int i=0; i<n; i++) { int a,b; scanf("%d%d",&a,&b); if (a>b) { m[mn].poz=i; m[mn].kos=a; m[mn].zys=b; mn++; } else { w[wi].poz=i; w[wi].kos=a; w[wi].zys=b; wi++; } } sort (w, w+wi, ros); sort (m, m+mn, ros); int k=0; for (int i=0; i<wi; i++) { if (hp-w[i].kos<=0) { rez=false; goto stop; } else { wyn[k]=w[i].poz+1; k++; } hp-=w[i].kos; hp+=w[i].zys; } for (int i=mn-1; i>=0; i--) { if (hp-m[i].kos<=0) { rez=false; goto stop; } else { wyn[k]=m[i].poz+1; k++; } hp-=m[i].kos; hp+=m[i].zys; } stop: if (rez==false) printf("NIE\n"); else { printf("TAK\n"); for (int i=0; i<n; i++) { if (i==n-1) printf("%d\n",wyn[i]); else printf("%d ",wyn[i]); } } return 0; } |
English