Pagini recente » Cod sursa (job #2512280) | Cod sursa (job #2219883) | Cod sursa (job #2547877) | Cod sursa (job #10024) | Cod sursa (job #405135)
Cod sursa(job #405135)
#include<stdio.h>
int g,w,p[1002],c[1002],a[2][5003],j,i;
void read()
{
FILE*f=fopen("energii.in","r");
fscanf(f,"%d%d",&g,&w);
for(i=0;i<g;++i)
{
fscanf(f,"%d%d",&p[i],&c[i]);
}
fclose(f);
}
int posibil(int s)
{
while(s>0)
{
if(a[1][s]==j)return 0;
s=s-p[a[1][s]];
}
return 1;
}
int dinamic()
{
int pos=1,var;
for(i=1;i<=w;++i)
{
a[0][i]=99999999;
if(a[1][i-1]&&p[a[1][i-1]]+(i-1)-p[a[1][i-1]]>=i)
{
a[1][i]=a[1][i-1];
a[0][i]=a[0][i-1];
}
else
{for(j=0;j<g;++j)
{
var=i-p[j];
if(i-p[j]<0)var=0;
if(c[j]+a[0][var]<a[0][i]&&posibil(var))
{
a[0][i]=c[j]+a[0][var];pos=j;
}
}
a[1][i]=pos;}
}
if(a[0][w]==99999999)return -1;
return a[0][w];
}
int main()
{
read();
FILE*g=fopen("energii.out","w");
fprintf(g,"%d\n",dinamic());
fclose(g);
return 0;
}