Cod sursa(job #1789212)

Utilizator mouse_wirelessMouse Wireless mouse_wireless Data 26 octombrie 2016 19:40:19
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#include <cstring>

#ifdef INFOARENA
#define ProblemName "rucsac"
#endif

#define MCONCAT(A, B) A B
#ifdef ProblemName
#define InFile MCONCAT(ProblemName, ".in")
#define OuFile MCONCAT(ProblemName, ".out")
#else
#define InFile "fis.in"
#define OuFile "fis.out"
#endif

#define MAXN 5010
#define MAXG 10010
int dp[MAXN];

int main() {
	freopen(InFile, "r", stdin);
	freopen(OuFile, "w", stdout);
	int N, G;
	scanf("%d%d", &N, &G);
	memset(dp, 0, sizeof(dp));
	int sol = 0;
	for (int i = 1; i <= N; ++i) {
		int w, p;
		scanf("%d%d", &w, &p);
		for (int j = G; j >= w; --j) {
			int tentative = dp[j - w] + p;
			if (tentative > dp[j]) {
				dp[j] = tentative;
				if (tentative > sol)
					sol = tentative;
			}
		}
	}
	printf("%d\n", sol);
	return 0;
}