Cod sursa(job #1429296)

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

#include <cstdio>
#define max(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, macs = 0, gi, pi;
	scanf("%d%d", &n, &gm);
	for (register int i = 1; i <= gm; ++i) {
		d[i] = -1;
	}
	for (register int i = 1; i <= n; ++i) {
		scanf("%d%d", &gi, &pi);
		for (register int j = dr; j >= 0; --j) {
			if (d[j] != -1 && j + gi <= gm && d[j + gi] < d[j] + pi) {
				d[j + gi] = d[j] + pi;
				dr = max(dr, j + gi);
				macs = max(macs, d[j + gi]);
			}
		}
	}
	printf("%d", macs);
	return 0;
}