Pagini recente » Cod sursa (job #2552242) | Cod sursa (job #1577750) | Cod sursa (job #864234) | Cod sursa (job #2509203) | Cod sursa (job #108586)
Cod sursa(job #108586)
#include<stdio.h>
#include<stdlib.h>
#include<values.h>
#define S 100000
#define Max 100000
int s[Max],w,n,cost[Max];
typedef struct{int a,c;}Energie;
Energie x[1005];
int cmp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
FILE*f=fopen("energii.in","r");
FILE*g=fopen("energii.out","w");
int main()
{
long k,i,j,m;
fscanf(f,"%d %d",&n,&w);
s[0]=1;
for(i=1;i<=n;++i) fscanf(f,"%d %d",&x[i].a,&x[i].c);
for(i=1;i<=S;++i) cost[i]=MAXINT;
qsort(x,n+1,sizeof(x[1]),cmp);
for(i=1;i<=n;++i)
{
for(j=2*w;j>=0;--j)
if(s[j]==1)
{
s[j+x[i].a]=1;
if(cost[j+x[i].a]>cost[j]+x[i].c)
cost[j+x[i].a]=cost[j]+x[i].c;
}
}
i=w;
while(s[i]==0&&i<=S) ++i;
if(i==S+1||i==S) fprintf(g,"-1");
else fprintf(g,"%d",cost[i]);
return 0;
}