Pagini recente » Cod sursa (job #129149) | Cod sursa (job #2444482) | Cod sursa (job #937964) | Cod sursa (job #2289208) | Cod sursa (job #1151208)
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,G,x[1005][10005],maxx;
struct cor{
int e,c;
};
cor v[1005];
int cmp(cor aa,cor bb)
{
if(aa.c==bb.c)
return aa.e<bb.e;
return aa.c<bb.c;
}
int main()
{
int i,j,aux;
FILE *f=fopen("energii.in","r");
FILE *g=fopen("energii.out","w");
fscanf(f,"%d%d",&n,&G);
for(i=1;i<=n;i++)
{
fscanf(f,"%d%d",&v[i].e,&v[i].c);
}
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;i++)
{
maxx+=v[i].e;
maxx=min
(maxx,G);
for(j=1;j<=v[i].e;j++)
{
if(x[i-1][j])
x[i][j]=min(x[i-1][j],v[i].c);
else x[i][j]=v[i].c;
}
for(j=v[i].e+1;j<=maxx;j++)
{
if(x[i-1][j])
x[i][j]=min(v[i].c+x[i-1][j-v[i].e],x[i-1][j]);
else x[i][j]=v[i].c+x[i-1][j-v[i].e];
}
}
if(x[n][G])
fprintf(g,"%d\n",x[n][G]);
else fprintf(g,"-1\n");
return 0;
}