#include <iostream> #include <algorithm> using namespace std; struct potwory { int nr; int d; int a; int roznica; int suma; }; bool myfunction (const potwory &x,const potwory &y) { if (x.roznica >=0 && y.roznica >= 0) return (x.d < y.d); if (x.roznica < 0 && y.roznica >= 0) return false; if (x.roznica >= 0 && y.roznica < 0) return true; return (x.a > y.a); } potwory pot[110000]; void loadpotwory(int d, int a, int nr); void printpot(int numer); #define D(x) int main() { std::ios_base::sync_with_stdio(false); int n, z, ndodatnie, nujemne; int dpom, apom; cin >> n >> z; D( cout << n << " " << z << endl;) for(int i = 1; i <= n; i++) { cin >> dpom >> apom; loadpotwory( dpom, apom, i); D( printpot(i);) } sort(&pot[1],&pot[n+1],myfunction); D( cout << " posortowane " << endl;) for(int i = 1; i <= n; i++) { D( printpot(i);) D( cout << " z = " << z;) z = z - pot[i].d; if ( z <= 0 ) { cout << "NIE" << endl; return 0; } D( cout << " z - d = " << z;) z = z + pot[i].a; D( cout << " z + a = " << z <<endl;) } cout << "TAK" << endl; for(int i = 1; i <= n; i++) { cout << pot[i].nr << " "; } cout << endl; return 0; } void loadpotwory(int d, int a, int nr) { pot[nr].nr=nr; pot[nr].d=d; pot[nr].a=a; pot[nr].roznica=a-d; pot[nr].suma=d+a; } void printpot(int numer) { cout << " nr=" << pot[numer].nr << " d=" << pot[numer].d << " a=" << pot[numer].a ; cout << " roznica=" << pot[numer].roznica << " suma=" << pot[numer].suma << endl; }
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 | #include <iostream> #include <algorithm> using namespace std; struct potwory { int nr; int d; int a; int roznica; int suma; }; bool myfunction (const potwory &x,const potwory &y) { if (x.roznica >=0 && y.roznica >= 0) return (x.d < y.d); if (x.roznica < 0 && y.roznica >= 0) return false; if (x.roznica >= 0 && y.roznica < 0) return true; return (x.a > y.a); } potwory pot[110000]; void loadpotwory(int d, int a, int nr); void printpot(int numer); #define D(x) int main() { std::ios_base::sync_with_stdio(false); int n, z, ndodatnie, nujemne; int dpom, apom; cin >> n >> z; D( cout << n << " " << z << endl;) for(int i = 1; i <= n; i++) { cin >> dpom >> apom; loadpotwory( dpom, apom, i); D( printpot(i);) } sort(&pot[1],&pot[n+1],myfunction); D( cout << " posortowane " << endl;) for(int i = 1; i <= n; i++) { D( printpot(i);) D( cout << " z = " << z;) z = z - pot[i].d; if ( z <= 0 ) { cout << "NIE" << endl; return 0; } D( cout << " z - d = " << z;) z = z + pot[i].a; D( cout << " z + a = " << z <<endl;) } cout << "TAK" << endl; for(int i = 1; i <= n; i++) { cout << pot[i].nr << " "; } cout << endl; return 0; } void loadpotwory(int d, int a, int nr) { pot[nr].nr=nr; pot[nr].d=d; pot[nr].a=a; pot[nr].roznica=a-d; pot[nr].suma=d+a; } void printpot(int numer) { cout << " nr=" << pot[numer].nr << " d=" << pot[numer].d << " a=" << pot[numer].a ; cout << " roznica=" << pot[numer].roznica << " suma=" << pot[numer].suma << endl; } |