Cod sursa(job #1866211)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 2 februarie 2017 19:03:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;

const int inf=1e9;
int N,G,W[100000],P[100000],DP[2][10000];
bool u=1;
int main(){
	
	ifstream cin("energii.in");
	ofstream cout("energii.out");
	cin >>N>>G;
	for (int i=1;i<=N;i++) cin >>W[i]>>P[i];
	for (int j=0;j<2;j++)
	for (int i=0;i<=G;i++) DP[j][i]=inf;
	for (int i=1;i<=N;i++,u=!u){
		
		for (int j=1;j<=G;j++){
			//if (W[i]<=j && DP[!u][j]<DP[!u][j-W[i]]+P[i]) DP[u][j]=DP[!u][j];
			//else DP[u][j]=DP[!u][j-W[i]]+P[i];
			if (W[i]>=j) DP[u][j]=min(DP[!u][j],P[i]);
			else DP[u][j]=min(DP[!u][j-W[i]]+P[i],DP[!u][j]);
		}
		
	}
	if (DP[!u][G]==inf) cout <<-1;
	else cout <<DP[!u][G];
}