#include <cstdio>
#include <vector>
#include <algorithm>
int main() {
int N;
long long int Z;
long long int X=0;
std::vector<int> result, result2;
std::vector<std::pair<int, std::pair<int,int> > > good, bad;
scanf("%d %lld",&N,&Z);
for (int i=0; i<N; ++i) {
int rem,add;
scanf("%d %d",&rem,&add);
if (add>=rem) {
good.push_back(std::make_pair(rem,std::make_pair(add, i+1)));
} else {
X += add - rem;
bad.push_back(std::make_pair(add, std::make_pair(rem,i+1)));
}
}
std::sort(good.begin(), good.end());
for (int i=0; i<good.size(); ++i) {
if (Z > good[i].first) {
result.push_back(good[i].second.second);
Z = Z + good[i].second.first - good[i].first;
} else {
printf("NIE\n");
return 0;
}
}
X += Z;
std::sort(bad.begin(), bad.end());
for (int i=0; i<bad.size(); ++i) {
if (X > bad[i].first) {
result2.push_back(bad[i].second.second);
X += bad[i].second.first - bad[i].first;
} else {
printf("NIE\n");
return 0;
}
}
printf("TAK\n");
for (int i=0; i<result.size(); ++i) printf("%d ",result[i]);
if (result2.size()>0) { for (int i=result2.size()-1; i>=0; --i) printf("%d ",result2[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 | #include <cstdio> #include <vector> #include <algorithm> int main() { int N; long long int Z; long long int X=0; std::vector<int> result, result2; std::vector<std::pair<int, std::pair<int,int> > > good, bad; scanf("%d %lld",&N,&Z); for (int i=0; i<N; ++i) { int rem,add; scanf("%d %d",&rem,&add); if (add>=rem) { good.push_back(std::make_pair(rem,std::make_pair(add, i+1))); } else { X += add - rem; bad.push_back(std::make_pair(add, std::make_pair(rem,i+1))); } } std::sort(good.begin(), good.end()); for (int i=0; i<good.size(); ++i) { if (Z > good[i].first) { result.push_back(good[i].second.second); Z = Z + good[i].second.first - good[i].first; } else { printf("NIE\n"); return 0; } } X += Z; std::sort(bad.begin(), bad.end()); for (int i=0; i<bad.size(); ++i) { if (X > bad[i].first) { result2.push_back(bad[i].second.second); X += bad[i].second.first - bad[i].first; } else { printf("NIE\n"); return 0; } } printf("TAK\n"); for (int i=0; i<result.size(); ++i) printf("%d ",result[i]); if (result2.size()>0) { for (int i=result2.size()-1; i>=0; --i) printf("%d ",result2[i]); } return 0; } |
English