Pagini recente » Profilul Meu | Monitorul de evaluare | Rating Manescu Razvan (razvanmanescu) | Monitorul de evaluare | Cod sursa (job #792246)
Cod sursa(job #792246)
#include <iostream>
#include <stdio.h>
using namespace std;
#define inf 0x8000000
int E[1001];
int C[1001];
int cost[2*10001];
int cmin = inf;
#define min(a,b) (((a) < (b)) ? (a) : (b))
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
int g,w,i,j;
scanf("%d%d",&g,&w);
for(i=1;i<=g;++i)
scanf("%d%d",&E[i],&C[i]);
for(j=2*w;j>=0;--j)
cost[j] = inf;
cost[0] = 0;
for(i=1;i<=g;++i)
{
for(j=0;j<=2*w - E[i];++j)
{
if(cost[j+E[i]] > cost[j] + C[i])
cost[j+E[i]] = cost[j] + C[i];
}
}
for(j=w;j<=2*w;++j)
cmin = min(cmin,cost[j]);
if(cmin < inf)
cout << cmin;
else
cout << -1;
return 0;
}