#include<cstdio> #include<algorithm> #include<vector> using namespace std; vector<pair<long long, int> >dobre, zle; vector<int> wyn; long long tab[100001][2]; int main(){ int n; long long z; scanf("%d%lld",&n, &z); for(int i=1; i<=n; i++){ long long a,b; scanf("%lld%lld", &a, &b); if(a>b) zle.push_back(make_pair(b, i)); if(a<=b) dobre.push_back(make_pair(a,i)); tab[i][0]=a; tab[i][1]=b; } sort(dobre.begin(), dobre.end()); sort(zle.begin(), zle.end()); for(int i=0; i<int(dobre.size()); i++) wyn.push_back(dobre[i].second); for(int i=int(zle.size())-1; i>=0; i--) wyn.push_back(zle[i].second); int czy=1; for(int i=0; i<int(wyn.size()); i++){ z-=tab[wyn[i]][0]; if(z<=0) czy=0; z+=tab[wyn[i]][1]; } if(czy==0) printf("NIE\n"); else{ printf("TAK\n"); for(int i=0; i<int(wyn.size()); i++) printf("%d ", wyn[i]); } }
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 | #include<cstdio> #include<algorithm> #include<vector> using namespace std; vector<pair<long long, int> >dobre, zle; vector<int> wyn; long long tab[100001][2]; int main(){ int n; long long z; scanf("%d%lld",&n, &z); for(int i=1; i<=n; i++){ long long a,b; scanf("%lld%lld", &a, &b); if(a>b) zle.push_back(make_pair(b, i)); if(a<=b) dobre.push_back(make_pair(a,i)); tab[i][0]=a; tab[i][1]=b; } sort(dobre.begin(), dobre.end()); sort(zle.begin(), zle.end()); for(int i=0; i<int(dobre.size()); i++) wyn.push_back(dobre[i].second); for(int i=int(zle.size())-1; i>=0; i--) wyn.push_back(zle[i].second); int czy=1; for(int i=0; i<int(wyn.size()); i++){ z-=tab[wyn[i]][0]; if(z<=0) czy=0; z+=tab[wyn[i]][1]; } if(czy==0) printf("NIE\n"); else{ printf("TAK\n"); for(int i=0; i<int(wyn.size()); i++) printf("%d ", wyn[i]); } } |