Pagini recente » Cod sursa (job #893273) | Cod sursa (job #2739495) | Cod sursa (job #2265148) | Cod sursa (job #1161241) | Cod sursa (job #1825821)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
const int oo = 2000000000;
int N,W;
int E[1005],C[1005];
int DP[1005][5005];
void Read()
{
fin>>N>>W;
for(int i = 1; i <= N; ++i)
fin>>E[i]>>C[i];
}
void Solve()
{
for(int i = 0; i <= N; ++i)
for(int j = 0; j <= W; ++j)
DP[i][j] = oo;
for(int i = 1; i <= N; ++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]);
}
}
}
void Print()
{
if(DP[N][W] == oo)
DP[N][W] = -1;
fout << DP[N][W]<<"\n";
}
int main()
{
Read();
Solve();
Print();
return 0;
}