Pagini recente » Cod sursa (job #325094) | Cod sursa (job #1756945) | Cod sursa (job #2138749) | Cod sursa (job #2598544) | Cod sursa (job #2214930)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("rucsac.in");
ofstream g ("rucsac.out");
int n,G,a[10001],b[100001],suma;
double val[10001];
int main()
{ f>>n>>G;
for(int i=1;i<=n;++i){
f>>b[i]>>a[i];
val[i]=double(((double)a[i])/b[i]);
}
for(int i=1;i<n;++i){
for(int j=i+1;j<=n;++j){
if(val[i]<val[j]){
double aux=val[i];
val[i]=val[j];
val[j]=aux;
double aux2=b[i];
b[i]=b[j];
b[j]=aux2;
double aux3=a[i];
a[i]=a[j];
a[j]=aux3;
}
}
}
int pret=0;
int gr=0;
for(int i=1;i<=n;++i){
if(val[i]==val[i+1] && b[i]<b[i+1]){
int aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
a[i]=a[i+1];
a[i+1]=aux;
int aux1=b[i];
b[i]=b[i+1];
b[i+1]=aux1;
}
if(gr+b[i]<=G){
pret+=a[i];
gr+=b[i];
}
}
g<<pret;
return 0;
}