Pagini recente » Cod sursa (job #1893417) | Cod sursa (job #2562056) | Cod sursa (job #971553) | Cod sursa (job #219319) | Cod sursa (job #402844)
Cod sursa(job #402844)
#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;
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;
if(best[i-1][j].c+v[1][i]<min)min=best[i-1][j].c+v[1][i];
}
}
}
}
return min;
}
int main()
{
read();
FILE*g=fopen("energii.out","w");
fprintf(g,"%d",dinamic());
fclose(g);
return 0;
}