#include <iostream> #include <queue> using namespace std; int main() { ios_base::sync_with_stdio(0); int n,d,e; long long hp; cin>>n>>hp; priority_queue <pair<pair<int,int>,int > > a,b; queue <int> wynik; for(int i=1;i<=n;i++) { cin>>d>>e; e-=d; if(e>=0) a.push(make_pair(make_pair(-d,e),i)); else b.push(make_pair(make_pair(e+d,d),i)); } while(!a.empty()) { if(-a.top().first.first < hp) { hp+=a.top().first.second; wynik.push(a.top().second); } else { cout<<"NIE"; return 0; } a.pop(); } while(!b.empty()) { if(b.top().first.second < hp) { hp+=b.top().first.first; hp-=b.top().first.second; wynik.push(b.top().second); } b.pop(); } if(wynik.size()==n) { cout<<"TAK"<<endl; while(!wynik.empty()) { cout<<wynik.front()<<" "; wynik.pop(); } } else cout<<"NIE"; 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 | #include <iostream> #include <queue> using namespace std; int main() { ios_base::sync_with_stdio(0); int n,d,e; long long hp; cin>>n>>hp; priority_queue <pair<pair<int,int>,int > > a,b; queue <int> wynik; for(int i=1;i<=n;i++) { cin>>d>>e; e-=d; if(e>=0) a.push(make_pair(make_pair(-d,e),i)); else b.push(make_pair(make_pair(e+d,d),i)); } while(!a.empty()) { if(-a.top().first.first < hp) { hp+=a.top().first.second; wynik.push(a.top().second); } else { cout<<"NIE"; return 0; } a.pop(); } while(!b.empty()) { if(b.top().first.second < hp) { hp+=b.top().first.first; hp-=b.top().first.second; wynik.push(b.top().second); } b.pop(); } if(wynik.size()==n) { cout<<"TAK"<<endl; while(!wynik.empty()) { cout<<wynik.front()<<" "; wynik.pop(); } } else cout<<"NIE"; return 0; } |