#include <cstdio> #include <iostream> #include <algorithm> using namespace std; struct p { long long d; long long h; long long nb; bool operator<(p drugi) const{return d<drugi.d;} }; struct e { long long d; long long h; long long nb; bool operator<(e drugi) const{return h<drugi.h;} }; p a[100003]; e b[100003]; bool zycie=true; long long n,z,x,y,q,w; int main(){ scanf("%lld%lld",&n,&z); for(int i=0;i<n;i++){ scanf("%lld%lld",&x,&y); if(x<=y){ a[q].d=x; a[q].h=y; a[q].nb=q+w+1; q++; } else{ b[w].d=x; b[w].h=y; b[w].nb=q+w+1; w++; } } sort(a,a+q); sort(b,b+w); for(int i=0;i<q;i++){ z-=a[i].d; if(z<=0) zycie=false; z+=a[i].h; } for(int i=w-1;i>=0;i--){ z-=b[i].d; if(z<=0) zycie=false; z+=b[i].h; } if(zycie==false) printf("NIE"); else{ printf("TAK\n"); for(int i=0;i<q;i++) printf("%lld ",a[i].nb); for(int i=w-1;i>=0;i--) printf("%lld ",b[i].nb); } }
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 | #include <cstdio> #include <iostream> #include <algorithm> using namespace std; struct p { long long d; long long h; long long nb; bool operator<(p drugi) const{return d<drugi.d;} }; struct e { long long d; long long h; long long nb; bool operator<(e drugi) const{return h<drugi.h;} }; p a[100003]; e b[100003]; bool zycie=true; long long n,z,x,y,q,w; int main(){ scanf("%lld%lld",&n,&z); for(int i=0;i<n;i++){ scanf("%lld%lld",&x,&y); if(x<=y){ a[q].d=x; a[q].h=y; a[q].nb=q+w+1; q++; } else{ b[w].d=x; b[w].h=y; b[w].nb=q+w+1; w++; } } sort(a,a+q); sort(b,b+w); for(int i=0;i<q;i++){ z-=a[i].d; if(z<=0) zycie=false; z+=a[i].h; } for(int i=w-1;i>=0;i--){ z-=b[i].d; if(z<=0) zycie=false; z+=b[i].h; } if(zycie==false) printf("NIE"); else{ printf("TAK\n"); for(int i=0;i<q;i++) printf("%lld ",a[i].nb); for(int i=w-1;i>=0;i--) printf("%lld ",b[i].nb); } } |