#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int n, z, d, a;
vector<pair<pair<int,int>,int> > v;
vector<int> w;
bool zle;
bool myf(pair<pair<int,int>,int> i, pair<pair<int,int>,int> j){return (i.first.first<j.first.first);}
bool myf2(pair<pair<int,int>,int> i, pair<pair<int,int>,int> j){return (i.first.second>j.first.second);}
int main()
{
scanf("%d%d", &n, &z);
zle=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d", &d, &a);
v.push_back(make_pair(make_pair(d,a),i));
}
sort(v.begin(),v.end(),myf);
for(int i=0;i<n;i++)
{
if(v[i].first.second-v[i].first.first>0){
if(v[i].first.first<z){
z+=v[i].first.second-v[i].first.first;
w.push_back(v[i].second);
}
else{
printf("NIE\n");
zle=1;
break;
}
}
}
sort(v.begin(),v.end(),myf2);
if(!zle){
for(int i=0;i<n;i++)
{
if(v[i].first.second-v[i].first.first<=0){
if(v[i].first.first<z){
z+=v[i].first.second-v[i].first.first;
w.push_back(v[i].second);
}
else{
printf("NIE\n");
zle=1;
break;
}
}
}
}
if(!zle){
printf("TAK\n");
for(int 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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include <cstdio> #include <vector> #include <algorithm> using namespace std; int n, z, d, a; vector<pair<pair<int,int>,int> > v; vector<int> w; bool zle; bool myf(pair<pair<int,int>,int> i, pair<pair<int,int>,int> j){return (i.first.first<j.first.first);} bool myf2(pair<pair<int,int>,int> i, pair<pair<int,int>,int> j){return (i.first.second>j.first.second);} int main() { scanf("%d%d", &n, &z); zle=0; for(int i=1;i<=n;i++) { scanf("%d%d", &d, &a); v.push_back(make_pair(make_pair(d,a),i)); } sort(v.begin(),v.end(),myf); for(int i=0;i<n;i++) { if(v[i].first.second-v[i].first.first>0){ if(v[i].first.first<z){ z+=v[i].first.second-v[i].first.first; w.push_back(v[i].second); } else{ printf("NIE\n"); zle=1; break; } } } sort(v.begin(),v.end(),myf2); if(!zle){ for(int i=0;i<n;i++) { if(v[i].first.second-v[i].first.first<=0){ if(v[i].first.first<z){ z+=v[i].first.second-v[i].first.first; w.push_back(v[i].second); } else{ printf("NIE\n"); zle=1; break; } } } } if(!zle){ printf("TAK\n"); for(int i=0;i<n;i++) { printf("%d ", w[i]); } } return 0; } |
English