Cod sursa(job #1429304)

Utilizator VAIonescuIonescu Vlad-Andrei VAIonescu Data 5 mai 2015 23:40:47
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
/*
 * main.cpp
 *
 *  Created on: May 5, 2015
 *      Author: Vlad Nazdravan
 */

#include <cstdio>
#define max(a,b) a>b?(a):(b)
#define min(a,b) a<b?(a):(b)
using namespace std;

const int gmax = 10000;
int d[gmax];

int main() {
	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w", stdout);
	int n, gm, dr = 0, gi, pi;
	scanf("%d%d", &n, &gm);
	for (register int i = 1; i <= gmax; ++i) {
		d[i] = -1;
	}
	for (register int i = 1; i <= n; ++i) {
		scanf("%d%d", &pi, &gi);
		for (register int j = dr; j >= 0; --j) {
			if (d[j] != -1 && j + gi <= gmax && d[j + gi] < d[j] + pi) {
				d[j + gi] = d[j] + pi;
				dr = max(dr, j + gi);
			}
		}
	}
	int myn = (1ll << 31) - 1;
	for (register int i = 1; i <= gmax; ++i) {
		if (d[i] == gm) {
			myn = min(myn, i);
		}
	}
	printf("%d", myn);
	return 0;
}