Pagini recente » Cod sursa (job #694344) | Cod sursa (job #1765782) | Cod sursa (job #3222129) | Cod sursa (job #2570332) | Cod sursa (job #908995)
Cod sursa(job #908995)
#include <fstream>
using namespace std;
ifstream r("rucsac.in");
ofstream w("rucsac.out");
unsigned G,N,take,prof;
float raport[5000],pret[5000],greutate[5000];
void quicksort(float raport[], unsigned left, unsigned right)
{
unsigned i=left, j=right;
float aux;
float pivot=raport[(left+right)/2];
while(i<=j)
{
while(raport[i]<pivot)
i++;
while(raport[j]>pivot)
j--;
if(i<=j)
{
aux=raport[i];
raport[i]=raport[j];
raport[j]=aux;
aux=pret[i];
pret[i]=pret[j];
pret[j]=aux;
aux=greutate[i];
greutate[i]=greutate[j];
greutate[j]=aux;
j--;
i++;
}
}
if(left<j)
quicksort(raport,left,j);
if(i<right)
quicksort(raport,i,right);
}
int main()
{
r>>N;
r>>G;
for(unsigned i=1;i<=N;i++)
{
r>>greutate[i];
r>>pret[i];
}
for(unsigned i=1;i<=N;i++)
raport[i]=(float)greutate[i]/pret[i];
quicksort(raport,1,N);
for(unsigned i=1;i<=N;i++)
{
if((take+greutate[i])<G)
{
take+=greutate[i];
prof+=pret[i];
}
}
w<<prof;
return 0;
}