#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long int lli;
struct mon
{
lli d, u;
int id;
};
bool operator<(mon a, mon b)
{
return a.d<b.d;
}
vector<mon> v1, v2;
vector<int> w1, w2;
int main()
{
int n;
lli z, zk=0LL;
mon x;
scanf("%d%lld", &n, &z);
for (int i=0; i<n; i++)
{
scanf("%lld%lld", &x.d, &x.u);
x.id=i+1;
if (x.d<=x.u)
v1.push_back(x);
else
{
zk-=x.d-x.u;
swap(x.d, x.u);
v2.push_back(x);
}
}
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
//for (int i=0; i<v1.size(); i++) printf(" %lld %lld\n", v1[i].d, v1[i].u); printf("\n");
//for (int i=0; i<v2.size(); i++) printf(" %lld %lld\n", v2[i].d, v2[i].u);
for (int i=0; i<v1.size(); i++)
{
if (v1[i].d>=z)
{
printf("NIE\n");
return 0;
}
z-=v1[i].d;
z+=v1[i].u;
w1.push_back(v1[i].id);
}
zk+=z;
for (int i=0; i<v2.size(); i++)
{
if (v2[i].d>=zk)
{
printf("NIE\n");
return 0;
}
zk-=v2[i].d;
zk+=v2[i].u;
w2.push_back(v2[i].id);
}
printf("TAK\n");
for (int i=0; i<w1.size(); i++) printf("%d ", w1[i]);
for (int i=w2.size()-1; i>=0; i--) printf("%d ", w2[i]);
printf("\n");
return 0;
//ADG
}
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <cstdio> #include <vector> #include <algorithm> using namespace std; typedef long long int lli; struct mon { lli d, u; int id; }; bool operator<(mon a, mon b) { return a.d<b.d; } vector<mon> v1, v2; vector<int> w1, w2; int main() { int n; lli z, zk=0LL; mon x; scanf("%d%lld", &n, &z); for (int i=0; i<n; i++) { scanf("%lld%lld", &x.d, &x.u); x.id=i+1; if (x.d<=x.u) v1.push_back(x); else { zk-=x.d-x.u; swap(x.d, x.u); v2.push_back(x); } } sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); //for (int i=0; i<v1.size(); i++) printf(" %lld %lld\n", v1[i].d, v1[i].u); printf("\n"); //for (int i=0; i<v2.size(); i++) printf(" %lld %lld\n", v2[i].d, v2[i].u); for (int i=0; i<v1.size(); i++) { if (v1[i].d>=z) { printf("NIE\n"); return 0; } z-=v1[i].d; z+=v1[i].u; w1.push_back(v1[i].id); } zk+=z; for (int i=0; i<v2.size(); i++) { if (v2[i].d>=zk) { printf("NIE\n"); return 0; } zk-=v2[i].d; zk+=v2[i].u; w2.push_back(v2[i].id); } printf("TAK\n"); for (int i=0; i<w1.size(); i++) printf("%d ", w1[i]); for (int i=w2.size()-1; i>=0; i--) printf("%d ", w2[i]); printf("\n"); return 0; //ADG } |
English