#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; } |