#include <iostream> #include <vector> #include <algorithm> #include <cstdio> using namespace std; int i, n, ob, moc, j = 0; long long z; vector < pair<int, pair<int,int> > > DOD, UJ; // obrazenia, moc, numer, moc, obrazenia, numer int W[100001]; int main() { scanf("%d%lld",&n,&z); for(i = 1; i <= n; ++i) { scanf("%d%d",&ob,&moc); if (moc - ob > 0) DOD.push_back(make_pair(ob, make_pair(moc, i)) ); else UJ.push_back(make_pair(moc, make_pair(ob, i)) ); } sort(DOD.begin(), DOD.end()); sort(UJ.rbegin(), UJ.rend()); for(i = 0; i < DOD.size(); ++i) { if (DOD[i].first < z) { z = z + (DOD[i].second.first - DOD[i].first); W[j++] = DOD[i].second.second; } else { printf("NIE\n"); return 0; } } for(i = 0; i < UJ.size(); ++i) { if (UJ[i].second.first < z) { z = z + UJ[i].first - UJ[i].second.first; W[j++] = UJ[i].second.second; } else { printf("NIE\n"); return 0; } } printf("TAK\n"); for(i = 0; i < n; ++i) printf("%d ",W[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 | #include <iostream> #include <vector> #include <algorithm> #include <cstdio> using namespace std; int i, n, ob, moc, j = 0; long long z; vector < pair<int, pair<int,int> > > DOD, UJ; // obrazenia, moc, numer, moc, obrazenia, numer int W[100001]; int main() { scanf("%d%lld",&n,&z); for(i = 1; i <= n; ++i) { scanf("%d%d",&ob,&moc); if (moc - ob > 0) DOD.push_back(make_pair(ob, make_pair(moc, i)) ); else UJ.push_back(make_pair(moc, make_pair(ob, i)) ); } sort(DOD.begin(), DOD.end()); sort(UJ.rbegin(), UJ.rend()); for(i = 0; i < DOD.size(); ++i) { if (DOD[i].first < z) { z = z + (DOD[i].second.first - DOD[i].first); W[j++] = DOD[i].second.second; } else { printf("NIE\n"); return 0; } } for(i = 0; i < UJ.size(); ++i) { if (UJ[i].second.first < z) { z = z + UJ[i].first - UJ[i].second.first; W[j++] = UJ[i].second.second; } else { printf("NIE\n"); return 0; } } printf("TAK\n"); for(i = 0; i < n; ++i) printf("%d ",W[i]); return 0; } |