#include <iostream> using namespace std; void quickmal(int d1[], int d2[], int d3[], int d4[], int l, int p) { int i, j, piwot1, piwot2, piwot3, piwot4; i=(l+p)/2; piwot1=d1[i]; piwot2=d2[i]; piwot3=d3[i]; piwot4=d4[i]; d1[i]=d1[p]; d2[i]=d2[p]; d3[i]=d3[p]; d4[i]=d4[p]; for (j=i=l; i<p; i++) { if (d1[i] > piwot1) { swap(d1[i], d1[j]); swap(d2[i], d2[j]); swap(d3[i], d3[j]); swap(d4[i], d4[j]); j++; } } d1[p]=d1[j]; d2[p]=d2[j]; d3[p]=d3[j]; d4[p]=d4[j]; d1[j]=piwot1; d2[j]=piwot2; d3[j]=piwot3; d4[j]=piwot4; if (l<j-1) quickmal(d1, d2, d3, d4, l, j-1); if (j+1<p) quickmal(d1, d2, d3, d4, j+1, p); } void quickros(int d1[], int d2[], int d3[], int d4[], int l, int p) { int i, j, piwot1, piwot2, piwot3, piwot4; i=(l+p)/2; piwot1=d1[i]; piwot2=d2[i]; piwot3=d3[i]; piwot4=d4[i]; d1[i]=d1[p]; d2[i]=d2[p]; d3[i]=d3[p]; d4[i]=d4[p]; for (j=i=l; i<p; i++) { if (d1[i] < piwot1) { swap(d1[i], d1[j]); swap(d2[i], d2[j]); swap(d3[i], d3[j]); swap(d4[i], d4[j]); j++; } } d1[p]=d1[j]; d2[p]=d2[j]; d3[p]=d3[j]; d4[p]=d4[j]; d1[j]=piwot1; d2[j]=piwot2; d3[j]=piwot3; d4[j]=piwot4; if (l<j-1) quickros(d1, d2, d3, d4, l, j-1); if (j+1<p) quickros(d1, d2, d3, d4, j+1, p); } int main() { ios_base::sync_with_stdio(0); int n, z; cin>>n>>z; int d1[n], d2[n], d3[n], d4[n]; for (int i=0; i<n; i++) { d1[i]=i+1; cin>>d2[i]>>d3[i]; d4[i]=d3[i]-d2[i]; } quickmal(d4, d1, d2, d3, 0, n-1); int lim=0; for (int i=0; i<n; i++) { if (d4[i]<=0) { lim=i; break; } } quickros(d2, d1, d3, d4, 0, lim-1); for (int i=0; i<lim; i++) { ///z=z+d4[i]; z=z-d2[i]; if (z<=0) { cout<<"NIE"; return 0; } z=z+d3[i]; } quickmal(d2, d1, d3, d4, lim, n-1); for (int i=lim; i<n; i++) { ///z=z+d4[i]; z=z-d2[i]; if (z<=0) { cout<<"NIE"; return 0; } z=z+d3[i]; } cout<<"TAK"<<endl; for (int i=0; i<n; i++) { cout<<d1[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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | #include <iostream> using namespace std; void quickmal(int d1[], int d2[], int d3[], int d4[], int l, int p) { int i, j, piwot1, piwot2, piwot3, piwot4; i=(l+p)/2; piwot1=d1[i]; piwot2=d2[i]; piwot3=d3[i]; piwot4=d4[i]; d1[i]=d1[p]; d2[i]=d2[p]; d3[i]=d3[p]; d4[i]=d4[p]; for (j=i=l; i<p; i++) { if (d1[i] > piwot1) { swap(d1[i], d1[j]); swap(d2[i], d2[j]); swap(d3[i], d3[j]); swap(d4[i], d4[j]); j++; } } d1[p]=d1[j]; d2[p]=d2[j]; d3[p]=d3[j]; d4[p]=d4[j]; d1[j]=piwot1; d2[j]=piwot2; d3[j]=piwot3; d4[j]=piwot4; if (l<j-1) quickmal(d1, d2, d3, d4, l, j-1); if (j+1<p) quickmal(d1, d2, d3, d4, j+1, p); } void quickros(int d1[], int d2[], int d3[], int d4[], int l, int p) { int i, j, piwot1, piwot2, piwot3, piwot4; i=(l+p)/2; piwot1=d1[i]; piwot2=d2[i]; piwot3=d3[i]; piwot4=d4[i]; d1[i]=d1[p]; d2[i]=d2[p]; d3[i]=d3[p]; d4[i]=d4[p]; for (j=i=l; i<p; i++) { if (d1[i] < piwot1) { swap(d1[i], d1[j]); swap(d2[i], d2[j]); swap(d3[i], d3[j]); swap(d4[i], d4[j]); j++; } } d1[p]=d1[j]; d2[p]=d2[j]; d3[p]=d3[j]; d4[p]=d4[j]; d1[j]=piwot1; d2[j]=piwot2; d3[j]=piwot3; d4[j]=piwot4; if (l<j-1) quickros(d1, d2, d3, d4, l, j-1); if (j+1<p) quickros(d1, d2, d3, d4, j+1, p); } int main() { ios_base::sync_with_stdio(0); int n, z; cin>>n>>z; int d1[n], d2[n], d3[n], d4[n]; for (int i=0; i<n; i++) { d1[i]=i+1; cin>>d2[i]>>d3[i]; d4[i]=d3[i]-d2[i]; } quickmal(d4, d1, d2, d3, 0, n-1); int lim=0; for (int i=0; i<n; i++) { if (d4[i]<=0) { lim=i; break; } } quickros(d2, d1, d3, d4, 0, lim-1); for (int i=0; i<lim; i++) { ///z=z+d4[i]; z=z-d2[i]; if (z<=0) { cout<<"NIE"; return 0; } z=z+d3[i]; } quickmal(d2, d1, d3, d4, lim, n-1); for (int i=lim; i<n; i++) { ///z=z+d4[i]; z=z-d2[i]; if (z<=0) { cout<<"NIE"; return 0; } z=z+d3[i]; } cout<<"TAK"<<endl; for (int i=0; i<n; i++) { cout<<d1[i]<<" "; } return 0; } |