Pagini recente » Cod sursa (job #2575079) | Cod sursa (job #2848502) | Cod sursa (job #2268138) | Cod sursa (job #1132736) | Cod sursa (job #748635)
Cod sursa(job #748635)
#include<stdio.h>
int energ[10001],g,w,lastvisit=0,mincost=-1; //comp -1
void isBetter(int x)
{
if(mincost==-1||mincost>x)
mincost=x;
return;
}
void insert(int en,int cst)
{
int start;
if(lastvisit<en)
{
lastvisit=en;
start=en;
}
else
start=lastvisit;
if(lastvisit>w)
lastvisit=w;
int newen,newcost;
for(int i=start; i>=1; i--)
{
if(energ[i]>-1)
{
newen=i+en;
newcost=energ[i]+cst;
if(newcost<energ[newen])
{
energ[newen]=newcost;
if(newen>=w)
isBetter(newcost);
}
}
}
if(energ[en]>cst||energ[en]==-1)
{
newen=en;
newcost=cst;
energ[newen]=newcost;
if(newen>=w)
isBetter(newcost);
}
return;
}
void initial()
{
for(int i=1; i<=10000; i++)
energ[i]=-1;
return;
}
int main()
{
FILE *in=fopen("energii.in","r"),*out=fopen("energii.out","w");
fscanf(in,"%d%d",&g,&w);
int e,cost;
initial();
for(int i=1; i<=g; i++)
{
fscanf(in,"%d%d",&e,&cost);
insert(e,cost);
}
fprintf(out,"%d\n",mincost);
return 0;
}