Pagini recente » Cod sursa (job #169868) | Cod sursa (job #2313643) | Cod sursa (job #813746) | Cod sursa (job #889302) | Cod sursa (job #1567856)
#include<cstdio>
using namespace std;
void file_init() {
if (freopen("rucsac.in", "r", stdin)) ;
if (freopen("rucsac.out", "w", stdout)) ;
}
void file_close() {
fclose(stdin);
fclose(stdout);
}
struct obiect { int w, p; };
obiect x[5005];
int N, G, T;
void quicksort(int inf, int sup) {
int i = inf,
j = sup,
mid = x[(i + j) / 2].p;
do {
while ((i < sup) && (x[i].p > mid)) ++i;
while ((j > inf) && (x[j].p < mid)) --j;
if (i<=j) {
obiect aux = x[i];
x[i] = x[j];
x[j] = aux;
++i, --j;
}
} while (i<=j);
if (inf < j) quicksort(inf, j);
if (sup > i) quicksort(i, sup);
}
int main() {
file_init();
if (scanf ("%d %d", &N, &G)) ;
for (int i=1; i<=N; ++i)
if (scanf ("%d %d", &x[i].w, &x[i].p)) ;
quicksort(1, N);
for (int i=1; ((i<=N)&&(x[i].w <= G)); ++i) {
G -= x[i].w;
T += x[i].p;
}
printf ("%d", T);
file_close();
return 0;
}