#include <iostream>
#include<algorithm>
using namespace std;
int n;
long long int z;
pair<int,int> dod[100008];
pair<int,int> uj[1000008];
int waru[100008];
int ward[100008];
int a;
int b;
int lic;
int uic;
int wic;
int tab[100008];
bool wynik;
int main()
{
cin >> n;
cin >> z;
for( int i=0; i<n; i++ )
{
cin >> a;
cin >> b;
if ( b-a>=0 )
{
dod[lic].first=a;
ward[i]=b-a;
dod[lic].second=i;
lic++;
}
else
{
uj[uic].first=a;
waru[i]=b-a;
uj[uic].second=i;
uic++;
}
}
sort(&dod[0],&dod[lic]);
wynik=true;
for ( int i=0; i<lic; i++ )
{
if ( z-dod[i].first > 0 )
{
z+=ward[dod[i].second];
tab[wic]=dod[i].second;
wic++;
}
else
{
wynik=false;
break;
}
}
if ( wynik == true )
{
sort(&uj[0],&uj[uic]);
for ( int i=uic-1; i>=0; i-- )
{
if(z>uj[i].first)
{
z+=waru[uj[i].second];
tab[wic]=uj[i].second;
wic++;
}
else
{
wynik=false;
break;
}
}
}
if( wynik == true )
{
cout << "TAK" << endl;
for ( int i=0; i<wic; i++ )
{
cout << tab[i]+1 << ' ';
}
}
else
{
cout << "NIE";
}
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 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 86 87 88 89 | #include <iostream> #include<algorithm> using namespace std; int n; long long int z; pair<int,int> dod[100008]; pair<int,int> uj[1000008]; int waru[100008]; int ward[100008]; int a; int b; int lic; int uic; int wic; int tab[100008]; bool wynik; int main() { cin >> n; cin >> z; for( int i=0; i<n; i++ ) { cin >> a; cin >> b; if ( b-a>=0 ) { dod[lic].first=a; ward[i]=b-a; dod[lic].second=i; lic++; } else { uj[uic].first=a; waru[i]=b-a; uj[uic].second=i; uic++; } } sort(&dod[0],&dod[lic]); wynik=true; for ( int i=0; i<lic; i++ ) { if ( z-dod[i].first > 0 ) { z+=ward[dod[i].second]; tab[wic]=dod[i].second; wic++; } else { wynik=false; break; } } if ( wynik == true ) { sort(&uj[0],&uj[uic]); for ( int i=uic-1; i>=0; i-- ) { if(z>uj[i].first) { z+=waru[uj[i].second]; tab[wic]=uj[i].second; wic++; } else { wynik=false; break; } } } if( wynik == true ) { cout << "TAK" << endl; for ( int i=0; i<wic; i++ ) { cout << tab[i]+1 << ' '; } } else { cout << "NIE"; } return 0; } |
English