Pagini recente » Cod sursa (job #2177931) | Cod sursa (job #1812975) | Cod sursa (job #1278483) | Cod sursa (job #170942) | Cod sursa (job #894630)
Cod sursa(job #894630)
#include <iostream>
#include <fstream>
using namespace std;
int n,W;
int E[1001],C[1001],solutie[5001];
int rezolvaFolosindProgramareDinamica()
{
for(int i=1;i<=n;i++)
for(int j=W;j>=0;--j)
if(j>E[i]) // daca am destula energie pentru a porni generatorul i
{
if(solutie[j-E[i]] + C[i] < solutie[j])
solutie[j-E[i]] = solutie[j];
}
else
{
if(solutie[j]>C[i])
solutie[j]=C[i];
}
solutie[W] < 1<<20 ? solutie[W] : -1;
return solutie[W];
}
int main()
{
ifstream in("energii.in");
in>>n>>W;
for(int i=1;i<=n;++i)
in>>E[i]>>C[i];
for(int i=1;i<=W;i++)
solutie[i]= 1<<20;
in.close();
ofstream out("energii.out");
out<<rezolvaFolosindProgramareDinamica();
out.close();
return 0;
}