Pagini recente » Cod sursa (job #2961716) | Cod sursa (job #1555984) | Cod sursa (job #362935) | Cod sursa (job #2212132) | Cod sursa (job #1045822)
#include <cstdio>
#include<fstream>
#include<algorithm>
using namespace std;
struct vm
{
int cost;
int pos;
};
struct fm
{
int cost;
bool pos;
};
int cmp(vm a,vm b)
{
if(a.pos==b.pos)
{
if(a.cost<b.cost)
return a.cost;
else
return b.cost;
}
else
return a.pos<b.pos;
}
vm v[55005];
fm rucsac[55005];
int main()
{
FILE *in,*out;
in=fopen("energii.in","r");
out=fopen("energii.out","w");
int n,i,j,w,ras,ok,min;
fscanf(in,"%d%d",&n,&w);
for(i=1;i<=n;i++)
fscanf(in,"%d%d",&v[i].pos,&v[i].cost);
rucsac[0].pos=true;
for(i=1;i<=n;i++)
{
for(j=55000-v[i].pos;j>=0;j--)
{
if(rucsac[j].pos==1)
{
if(rucsac[j+v[i].pos].pos==0)
{
rucsac[j+v[i].pos].pos=1;
rucsac[j+v[i].pos].cost=rucsac[j].cost+v[i].cost;
}
else
{
if(rucsac[j+v[i].pos].cost>rucsac[j].cost+v[i].cost)
rucsac[j+v[i].pos].cost=rucsac[j].cost+v[i].cost;
}
}
}
}
ok=0;
ras=w;
min=999999999;
while(ras<55000)
{
if(rucsac[ras].pos==1)
{
if(rucsac[ras].cost<min)
min=rucsac[ras].cost;
}
ras++;
}
fprintf(out,"%d",min);
return 0;
}