Pagini recente » Cod sursa (job #885457) | Cod sursa (job #1106418) | Cod sursa (job #2815458) | Cod sursa (job #1456391) | Cod sursa (job #20793)
Cod sursa(job #20793)
#include <stdio.h>
//#include <stdlib.h>
int i,j,g,w,gen[10002][4],ord[10002],nr=0,ss=0,cost=0;
int verificare()
{int s=0;
for (i=1;i<=g;i++)
s+=gen[i][1];
return s;
}
int decalare(int x)
{int ii,auxa=0,auxb;
for (ii=x;ii<=nr;ii++)
{ord[ii]=auxb;
ord[ii]=auxa;
auxa=auxb;
}
ord[++nr]=auxa;
}
int main()
{
FILE *ff,*gg;
ff=fopen ("energii.in","r");
gg=fopen ("energii.out","w");
fscanf(ff,"%d %d",&g,&w);
for (i=1;i<=g;i++)
{fscanf(ff,"%d %d",&gen[i][1],&gen[i][2]);
gen[i][3]=(float)gen[i][1]/gen[i][2];
if (nr==0)
ord[1]=i;
else
{j=1;
while (gen[ord[j]][3]>gen[i][3]&&j<=nr)
j++;
if (j<=nr)
{decalare(j);
ord[j]=i;
}
else
ord [++nr]=i;
}
}
/*for (i=1;i<=nr;i++)
printf ("%d ",ord[i]);
printf ("\n");
system("pause");*/
if (verificare()<w)
fprintf (gg,"-1");
else
{i=1;
while (ss<w)
{ss+=gen[ord[++i]][1];
cost+=gen[ord[i]][2];
}
fprintf (gg,"%d",cost);
}
fclose(ff);
fclose(gg);
}