Pagini recente » Cod sursa (job #556306) | Cod sursa (job #3282580) | Cod sursa (job #716325) | Cod sursa (job #420670) | Cod sursa (job #874495)
Cod sursa(job #874495)
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int i,v[1001],a[1001],b[1001],l,r,n,gmax;
void quicksort(int v[],int l,int r){
int i=l, j=r;
int aux;
int pv=v[(l+r)/2];
while (i<=j){
while (v[i]>pv)
i++;
while (v[j]<pv)
j--;
if (i<=j){
aux=v[i];
v[i]=v[j];
v[j]=aux;
aux=a[i];
a[i]=a[j];
a[j]=aux;
aux=b[i];
b[i]=b[j];
b[j]=aux;
i++;
j--;
}
}
if (l<j)
quicksort(v,l,j);
if (i<r)
quicksort(v,i,r);
return;
}
int main()
{
f>>n>>gmax;
for(i=1;i<=n;i++)
{
f>>a[i];
f>>b[i];
}
for(i=1;i<=n;i++)
v[i]=b[i]/a[i];
l=1;
r=n;
quicksort(v,l,r);
int s=0;
for(i=1;i<=n;i++)
{
if(gmax-a[i]>=0)
{
s=s+b[i];
g<<b[i]<<" ";
gmax=gmax-a[i];
}
}
g<<s;
f.close();
g.close();
return 0;
}