Pagini recente » Monitorul de evaluare | Cod sursa (job #1221997) | Cod sursa (job #114189) | Monitorul de evaluare | Cod sursa (job #1833628)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
const int oo=2000000000;
const int GMax = 1005;
const int WMax = 5005;
int DP[1005][5005], E[1005], C[5005], G,W;
void read()
{
fin>>G>>W;
for(int i=1; i<=G; ++i)
{
fin>>E[i]>>C[i];
}
for(int i=1; i<=G; ++i)
for (int j=1; j<=W; ++j)
DP[i][j]=oo;
for (int i=1; i<=E[1]; ++i)
DP[1][i]=C[1];
}
void Solve()
{
for(int i=2; i<=G; ++i)
{
for(int j=1; j<=W; ++j)
{
DP[i][j] = DP[i-1][j];
if(j - E[i] > 0)
DP[i][j] = min(DP[i][j],DP[i-1][j-E[i]] + C[i]);
else
DP[i][j] = min(DP[i][j],C[i]);
}
}
}
int main()
{
read();
Solve();
if (DP[G][W]==oo)
{
fout<<-1<<"\n";
}
else
fout<<DP[G][W]<<"\n";
return 0;
}