#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int, int> pii;
int main()
{
ios_base::sync_with_stdio(0);
int n, z;
cin>>n>>z;
vector<pair<int, pii> > plusy;
vector<pair<int, pii> > minusy;
int s = 0;
for(int i=0; i<n; i++){
int a, b;
cin>>a>>b;
if(a-b>=0) {
minusy.push_back(make_pair(b, make_pair(a-b, i)));
s+=a-b;
}
else plusy.push_back(make_pair(a, make_pair(b-a, i)));
}
sort(plusy.begin(), plusy.end());
sort(minusy.begin(), minusy.end());
bool ans = true;
for(int i=0; i<plusy.size() && ans; i++){
pair<int, pii> para = plusy[i];
if(para.first >= z) ans = false;
else z += para.second.first;
// cout<<z<<endl;
}
z-=s;
for(int i=0; i<minusy.size() && ans; i++){
// cout<<z<<endl;
if(z<0) ans = false;
pair<int, pii> para = minusy[i];
if(para.first >= z) ans = false;
else z += para.second.first;
// cout<<z<<endl;
}
if(!ans) cout<<"NIE"<<endl;
else{
cout<<"TAK"<<endl;
for(int i=0; i<plusy.size(); i++) cout<<plusy[i].second.second+1<<" ";
for(int i=0; i<minusy.size(); i++) cout<<minusy[minusy.size()-1-i].second.second+1<<" ";
cout<<endl;
}
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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; typedef pair<int, int> pii; int main() { ios_base::sync_with_stdio(0); int n, z; cin>>n>>z; vector<pair<int, pii> > plusy; vector<pair<int, pii> > minusy; int s = 0; for(int i=0; i<n; i++){ int a, b; cin>>a>>b; if(a-b>=0) { minusy.push_back(make_pair(b, make_pair(a-b, i))); s+=a-b; } else plusy.push_back(make_pair(a, make_pair(b-a, i))); } sort(plusy.begin(), plusy.end()); sort(minusy.begin(), minusy.end()); bool ans = true; for(int i=0; i<plusy.size() && ans; i++){ pair<int, pii> para = plusy[i]; if(para.first >= z) ans = false; else z += para.second.first; // cout<<z<<endl; } z-=s; for(int i=0; i<minusy.size() && ans; i++){ // cout<<z<<endl; if(z<0) ans = false; pair<int, pii> para = minusy[i]; if(para.first >= z) ans = false; else z += para.second.first; // cout<<z<<endl; } if(!ans) cout<<"NIE"<<endl; else{ cout<<"TAK"<<endl; for(int i=0; i<plusy.size(); i++) cout<<plusy[i].second.second+1<<" "; for(int i=0; i<minusy.size(); i++) cout<<minusy[minusy.size()-1-i].second.second+1<<" "; cout<<endl; } return 0; } |
English