Pagini recente » Istoria paginii runda/test912/clasament | Diferente pentru olimpici intre reviziile 21 si 22 | Monitorul de evaluare | Istoria paginii runda/ruc/clasament | Cod sursa (job #1453485)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
const int Dim = 100100;
const int INF = 100000;
inline int Min(int A,int B)
{
return (A < B) ? A : B;
}
int G,W,dp[Dim],Sol,Cmin = INF;
int main()
{
fin >> G;
fin >> W;
int E,C;
fill(dp,dp + Dim,INF);
while (G--)
{
fin >> E >> C;
if (E > W) continue;
for (int j = Dim;j >= E;j--)
{
dp[j] = Min(dp[j],dp[j-E] + C);
if (j >= W && dp[j] < Cmin)
Sol = j,Cmin = dp[j];
}
dp[E] = Min(dp[E],C);
if (E >= W && dp[E] < Cmin)
Sol = E,Cmin = dp[E];
}
fout << Cmin;
return 0;
}