Pagini recente » Cod sursa (job #686859) | Cod sursa (job #2506205) | Cod sursa (job #2835584) | Cod sursa (job #2132810) | Cod sursa (job #538220)
Cod sursa(job #538220)
#include<iostream.h>
#include<fstream.h>
void quicksort(float a[],int b[], int c[], int x, int y)
{
int i,j,d;
float D,piv;
i=x; j=y;
piv=a[(x+y)/2];
while (i <= j)
{
while(a[i]<piv)
i++;
while(a[j]>piv)
j--;
if (i <= j)
{
D=a[i];
a[i]=a[j];
a[j]=D;
d=b[i];
b[i]=b[j];
b[j]=d;
d=c[i];
c[i]=c[j];
c[j]=d;
i++;
j--;
}
}
if(x<j)
quicksort(a,b,c,x,j);
if(i<y)
quicksort(a,b,c,i,y);
}
int main()
{
fstream f("energii.in", ios::in);
fstream g("energii.out", ios::out);
int G,W,i,S;
f>>G>>W;
int E[G+1],C[G+1];
for(i=1;i<=G;i++)
f>>E[i]>>C[i];
for(S=0,i=1;i<=G;i++)
S=S+E[i];
if(S<W)
g<<"-1";
else if(S==W)
{
for(i=1,S=0;i<=G;i++)
S=S+C[i];
g<<S;
}
else
{
float r[G+1];
for(i=1;i<=G;i++)
r[i]=E[i]/C[i]*1.;
quicksort(r,E,C,1,G);
for(i=1,S=0;(i<=G) && (S<W);i++)
S=S+C[i];
g<<S;
}
}