Pagini recente » Cod sursa (job #2964357) | Cod sursa (job #1585268) | Cod sursa (job #2581866) | Cod sursa (job #524433) | Cod sursa (job #930010)
Cod sursa(job #930010)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
# define infinit 1<<30
int i,n,j,Emax,energie[1005],cost[1005],dp[1005][1005];
int main() {
f>>n>>Emax;
for(i=1; i<=n; i++)
f>>energie[i]>>cost[i];
//dp[i][j] = costul minim repornirii centralei utilizand o submultime
//dintre primele i generatoare astfel incat
// energia unei submultimi dintre primele i generatoare sa fie >=j
for(j=0;j<=Emax;j++) dp[0][j]=infinit;
dp[0][0]=0;
for(i=1; i<=n; i++)
for(j=0; j<=Emax; j++) {
dp[i][j] = dp[i-1][j];
if(energie[i]>j)dp[i][j]=min(dp[i][j],cost[i]); // daca energie obiectului meu e mai mare
//decat j atunci
if(energie[i]<=j) dp[i][j]=min(dp[i][j],dp[i-1][j-energie[i]]+cost[i]);
}
if(dp[n][Emax]==infinit) g<<-1;
else g<<dp[n][Emax];
return 0;
}