Cod sursa(job #1202858)
Utilizator | Data | 29 iunie 2014 21:37:36 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.74 kb |
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
float r[5001];
int check()
{
for(auto x:r) if(x) return 1;
return 0;
}
int main()
{
int n,G,i,j,s=0;
f>>n>>G;
int w[n],p[n];
for(i=1;i<=n;++i) { f>>w[i]>>p[i];
r[i]=1.*p[i]/w[i];
}
while(G>0&&check()) { for(i=j=1;i<=n;++i) if(r[i]>r[j]) j=i;
if(G>=w[j]) { G-=w[j];
s+=p[j];
}
r[j]=0;
for(i=1;i<=n;++i) g<<r[i]<<" ";
g<<endl;
g<<G<<endl;
}
g<<s;
f.close();
g.close();
return 0;
}