Pagini recente » Cod sursa (job #30130) | Cod sursa (job #1644264) | Cod sursa (job #1268088) | Cod sursa (job #240302) | Cod sursa (job #124136)
Cod sursa(job #124136)
#include "stdio.h"
#define INF 2000000001
FILE *fin=freopen("energii.in","r",stdin);
FILE *fout=freopen("energii.out","w",stdout);
int g,w,x[1001],c[1001],f[1001][5001],min;
void citeste()
{
scanf("%d%d",&g,&w);
for(int i=1;i<=g;i++)
{
scanf("%d%d",&x[i],&c[i]);
}
fclose(fin);
for (int i = 1; i <= w; i++)
f[0][i] = INF;
f[0][0] = 0;
}
void rezolva()
{
int i,j;
int imin=0;
int crt,prev;
for(i=1;i<=g;i++)
{
crt=i; prev=i-1;
for(j=w;j>=1;j--)
{
f[crt][j]=INF;
if(j==w){
if(x[i]<=j && c[i]+f[prev][j-x[i]]<f[prev][j])
{
f[crt][j]=c[i]+f[prev][j-x[i]];
}else f[crt][j]=f[prev][j];
}
else
{
if(f[prev][j]>f[crt][j+1]) f[crt][j]=f[crt][j+1];
else f[crt][j]=f[prev][j];
if(x[i]<=j && c[i]+f[prev][j-x[i]]<f[crt][j])
{
f[crt][j]=c[i]+f[prev][j-x[i]];
}
}
}
}
}
void afiseaza()
{
if(f[g][w]!=INF)
printf("%d",f[g][w]);
else printf("-1");
fclose(fout);
}
int main()
{
citeste();
rezolva();
afiseaza();
return 0;
}