#include<cstdio> #include<algorithm> using namespace std; struct postac{ long long int koszt; long long int zysk; long long int krok; }; postac pos[100002]; bool por(postac a, postac b){ if(a.zysk<0 && b.zysk<0){ if(a.koszt>b.koszt)return true; if(a.koszt<b.koszt)return false; if(a.zysk>b.zysk)return true; return false; } if(a.zysk>=0 && b.zysk>=0){ if(a.koszt<b.koszt)return true; if(a.koszt>b.koszt)return false; if(a.zysk>b.zysk)return true; return false; } if(a.zysk>=0 && b.zysk<0)return true; return false; } long long int n,life,a,b; int main(){ scanf("%lld %lld", &n, &life); for(int i=0; i<n; ++i){ scanf("%lld %lld", &a, &b); pos[i].koszt=a; pos[i].zysk=b-a; pos[i].krok=i+1; } sort(pos,pos+n,por); for(int i=0; i<n; ++i){ if((life-pos[i].koszt)<=0){ printf("NIE\n"); return 0; } life+=pos[i].zysk; } printf("TAK\n"); for(int i=0; i<n; ++i){ printf("%lld ", pos[i].krok); } printf("\n"); return 0; } /* tak ma byc posortowane { 3 2 3 5 4 1 6 2 6 3 5 -1 5 -4 3 -2 2 -1 } IN: 9 3 3 5 4 5 5 4 6 9 3 8 2 1 6 8 5 1 3 1 */
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 | #include<cstdio> #include<algorithm> using namespace std; struct postac{ long long int koszt; long long int zysk; long long int krok; }; postac pos[100002]; bool por(postac a, postac b){ if(a.zysk<0 && b.zysk<0){ if(a.koszt>b.koszt)return true; if(a.koszt<b.koszt)return false; if(a.zysk>b.zysk)return true; return false; } if(a.zysk>=0 && b.zysk>=0){ if(a.koszt<b.koszt)return true; if(a.koszt>b.koszt)return false; if(a.zysk>b.zysk)return true; return false; } if(a.zysk>=0 && b.zysk<0)return true; return false; } long long int n,life,a,b; int main(){ scanf("%lld %lld", &n, &life); for(int i=0; i<n; ++i){ scanf("%lld %lld", &a, &b); pos[i].koszt=a; pos[i].zysk=b-a; pos[i].krok=i+1; } sort(pos,pos+n,por); for(int i=0; i<n; ++i){ if((life-pos[i].koszt)<=0){ printf("NIE\n"); return 0; } life+=pos[i].zysk; } printf("TAK\n"); for(int i=0; i<n; ++i){ printf("%lld ", pos[i].krok); } printf("\n"); return 0; } /* tak ma byc posortowane { 3 2 3 5 4 1 6 2 6 3 5 -1 5 -4 3 -2 2 -1 } IN: 9 3 3 5 4 5 5 4 6 9 3 8 2 1 6 8 5 1 3 1 */ |