#include<iostream> #include<vector> #include<string> #include<algorithm> #include<map> #include<set> #include<sstream> #include<cmath> #include<cstdio> using namespace std; #define REP(i,n) for(int i=0;i<n;++i) #define REPD(i,n) for(int i=n;i>-1;--i) #define FOR(i,j,k) for(int i=j;i<k;++i) #define PB push_back #define LL long long #define MAX_S 101 #define MP make_pair #define ALL(v) v.begin(),v.end() #define INF 1000000001 int main(){ cin.sync_with_stdio(false); int n; LL z; cin>>n>>z; vector<pair<LL,LL> > rs; vector<pair<LL,LL> > d(n); vector<int> ret; LL minZ = -1; REP(i,n) { long long x,y; cin>>x>>y; d[i] = MP(x,y); if(y-x>0) {z+=y-x; ret.PB(i+1);} else if(y-x==0) { ret.PB(i+1); minZ = max(minZ,x+1); } else rs.PB(MP(x,i)); } if(minZ>z) { cout<<"NIE"<<endl; return 0; } sort(ALL(rs)); REPD(i,rs.size()-1) { int idx = rs[i].second; z-=d[idx].first; if(z<1) { cout<<"NIE"<<endl; return 0; } z+=d[idx].second; ret.PB(idx+1); } cout<<"TAK"<<endl; REP(i,ret.size()) cout<<ret[i]<<" ";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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include<iostream> #include<vector> #include<string> #include<algorithm> #include<map> #include<set> #include<sstream> #include<cmath> #include<cstdio> using namespace std; #define REP(i,n) for(int i=0;i<n;++i) #define REPD(i,n) for(int i=n;i>-1;--i) #define FOR(i,j,k) for(int i=j;i<k;++i) #define PB push_back #define LL long long #define MAX_S 101 #define MP make_pair #define ALL(v) v.begin(),v.end() #define INF 1000000001 int main(){ cin.sync_with_stdio(false); int n; LL z; cin>>n>>z; vector<pair<LL,LL> > rs; vector<pair<LL,LL> > d(n); vector<int> ret; LL minZ = -1; REP(i,n) { long long x,y; cin>>x>>y; d[i] = MP(x,y); if(y-x>0) {z+=y-x; ret.PB(i+1);} else if(y-x==0) { ret.PB(i+1); minZ = max(minZ,x+1); } else rs.PB(MP(x,i)); } if(minZ>z) { cout<<"NIE"<<endl; return 0; } sort(ALL(rs)); REPD(i,rs.size()-1) { int idx = rs[i].second; z-=d[idx].first; if(z<1) { cout<<"NIE"<<endl; return 0; } z+=d[idx].second; ret.PB(idx+1); } cout<<"TAK"<<endl; REP(i,ret.size()) cout<<ret[i]<<" ";cout<<endl; return 0; } |