Cod sursa(job #2448081)

Utilizator ShayTeodor Matei Shay Data 15 august 2019 17:13:10
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

#define WMAX 5001
#define INF 0x3f3f3f3f
int dp[2][WMAX];

int main() {
	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w", stdout);

	int n, g, w, p;
	scanf("%d", &n);
	scanf("%d", &g);
	int power[n + 1], costs[n + 1];
	for (int i = 0 ; i < 2 ; ++i) {
		for (int j = 0 ; j <= g; ++j) {
			dp[i][j] = INF;
		}
	}

	for (int i = 0 ; i < n ; ++i) {
		scanf("%d%d", &power[i], &costs[i]);
	}

	int l = 0;
	for (int i = 1 ; i <= n ; ++i, l = 1 - l) {
		for (int j = 1 ; j <= g ; ++j) {
			if (j > power[i]) {
				dp[l][j] = -1;
			} else if (dp[1 - l][j] == -1) { 
				dp[l][j] = costs[i];
			} else {
				dp[l][j] = std::min(costs[i] + dp[l][j], power[i]);
			}
		}
	}

	printf("%d\n", dp[l][g]);
	return 0;
}