Pagini recente » Cod sursa (job #2044073) | Cod sursa (job #2517672) | Cod sursa (job #1927592) | Cod sursa (job #1188024) | Cod sursa (job #217955)
Cod sursa(job #217955)
#include<stdio.h>
#define inf 2000000000
#define min(a,b) (a<b?a:b)
FILE *fin=fopen("energii.in","r"),
*fout=fopen("energii.out","w");
int N,W,E[5005],C[5005],s[17005],sol;
char uz[5005];
int main(){
fscanf(fin,"%d %d",&N,&W);
for(int i=1;i<=N;i++)
fscanf(fin,"%d %d",&E[i],&C[i]);
sol=inf;
for(int i=1;i<=17000;i++)
s[i]=inf;
uz[0]=1;
for(int j=1;j<=N;j++)
for(int k=W;k>=0;k--)
if(uz[k]){
s[k+E[j]]=min(s[k]+C[j],s[k+E[j]]);
uz[k+E[j]]=1;
if(k+E[j]>=W)
sol=min(sol,s[k+E[j]]);
}
if(sol==inf)
fprintf(fout,"-1\n");
else
fprintf(fout,"%d\n",sol);
fclose(fin);
fclose(fout);
return 0;
}