#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]); } } |
English