#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstdlib>
using namespace std;
const int N = 1e5;
int d[N], a[N];
vector<int> pos, neg;
bool cmp(int x, int y) { return a[x] > a[y]; }
bool cmp2(int x, int y) { return d[x] < d[y]; }
void fail() { printf("NIE\n"); exit(0); }
int main() {
int n;
long long z;
scanf("%d%lld", &n,&z);
for (int i=0; i<n; i++) {
scanf("%d%d", &d[i],&a[i]);
if (d[i] <= a[i]) pos.push_back(i); else neg.push_back(i);
}
sort(pos.begin(),pos.end(),cmp2);
sort(neg.begin(),neg.end(),cmp);
for (int x: pos)
if (z <= d[x]) fail(); else z += a[x]-d[x];
for (int x: neg)
if (z <= d[x]) fail(); else z += a[x]-d[x];
printf("TAK\n");
for (int x: pos) printf("%d ", x+1);
for (int x: neg) printf("%d ", x+1);
printf("\n");
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 | #include <cstdio> #include <algorithm> #include <vector> #include <cstdlib> using namespace std; const int N = 1e5; int d[N], a[N]; vector<int> pos, neg; bool cmp(int x, int y) { return a[x] > a[y]; } bool cmp2(int x, int y) { return d[x] < d[y]; } void fail() { printf("NIE\n"); exit(0); } int main() { int n; long long z; scanf("%d%lld", &n,&z); for (int i=0; i<n; i++) { scanf("%d%d", &d[i],&a[i]); if (d[i] <= a[i]) pos.push_back(i); else neg.push_back(i); } sort(pos.begin(),pos.end(),cmp2); sort(neg.begin(),neg.end(),cmp); for (int x: pos) if (z <= d[x]) fail(); else z += a[x]-d[x]; for (int x: neg) if (z <= d[x]) fail(); else z += a[x]-d[x]; printf("TAK\n"); for (int x: pos) printf("%d ", x+1); for (int x: neg) printf("%d ", x+1); printf("\n"); return 0; } |
English