Pagini recente » Autentificare | Monitorul de evaluare | Cod sursa (job #3367494) | Cod sursa (job #3367253) | Cod sursa (job #3366834)
#include <fstream>
#include <algorithm>
#define INF (1LL<<30)
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int G,W;
int E[10001],C[10001];
int dp[5001];
int main()
{
fin>>G>>W;
for(int i=1;i<=G;i++)
fin>>E[i]>>C[i];
for(int i=1;i<=W;i++)
dp[i]=INF; //dp=costul minim sa obtin suma i(i<W) sau o suma mai mare sau egala cu i(i=W)
for(int i=1;i<=G;i++)
for(int j=W-1;j>=0;j--)
if(dp[j]!=INF){
int k=E[i]+j;
if(k>W)
k=W;
dp[k]=min(dp[k],dp[j]+C[i]);
}
if(dp[W]==INF)
fout<<-1;
else
fout<<dp[W];
return 0;
}