Pagini recente » Cod sursa (job #2238569) | Cod sursa (job #1925612) | Cod sursa (job #1683599) | Cod sursa (job #159129) | Cod sursa (job #402826)
Cod sursa(job #402826)
#include<stdio.h>
int g,w,v[2][1001];//v[0][..]energie,v[1][..]costul
struct mat
{
int c,e;
}best[1001][1001];
void read()
{
FILE*f=fopen("energii.in","r");
fscanf(f,"%d%d",&g,&w);
int i;
for(i=0;i<g;++i)
fscanf(f,"%d%d",&v[0][i],&v[1][i]);
fclose(f);
}
int dinamic()
{
int i,min=99999,j,ok;
for(i=0;i<g;++i)
{
best[i][i].e=v[0][i];
best[i][i].c=v[1][i];
if(best[i][i].e==w&&best[i][i].c<min)
min=best[i][i].c;
for(j=0;j<g;++j)
{
if(i<=j)continue;
ok=0;
if(v[0][j]+v[0][i]<=w)
{ ok=1;
best[i][j].e=v[0][j]+v[0][i];
best[i][j].c=v[1][j]+v[1][i];
if(best[i][j].c<min&&best[i][j].e==w)min=best[i][j].c;
}
if(i)
{
if(best[i-1][j].e+v[0][i]<=w)
{
best[i][j].e=best[i-1][j].e+v[0][i];
best[i][j].c=best[i-1][j].c+v[1][i];
if(best[i][j].c<min&&best[i][j].e==w)min=best[i][j].c;
}
}
}
}
return min;
}
int main()
{
read();
FILE*g=fopen("energii.out","w");
fprintf(g,"%d",dinamic());
fclose(g);
return 0;
}