Pagini recente » Arhiva Infoarena Monthly | Istoria paginii runda/oji20092010 | Cod sursa (job #765669) | Cod sursa (job #62411) | Cod sursa (job #2358886)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
/*int n;
float m,osz=0,l;
bool csere=1;
cin >> n;
cin >> m;
int x[n],y[n],z[n],k=n-1;
for (int i=0;i<=n-1;i++){
cin >> x[i];
cin >> y[i];
}for (int i=0;i<=n-1;i++){
z[i]=y[i]/x[i];
}while (csere){
csere=0;
for (int i=0;i<=n-1;i++){
if (z[i]>z[i+1]){
swap(z[i],z[i+1]);
swap(y[i],y[i+1]);
swap(x[i],x[i+1]);
csere=1;
}
}
}
while (x[k]<m){
if (m-x[k]>=0){
m-=x[k];
osz+=y[k];
k--;
}
}
l=(float)x[k]/m;
osz+=y[k]/l;
cout << osz;*/
int n;
ifstream f("rucsac.in");
float m,osz=0,l;
bool csere=1;
f >> n;
f >> m;
int x[n],y[n],z[n],k=n-1;
for (int i=0;i<=n-1;i++){
f >> x[i];
f >> y[i];
}for (int i=0;i<=n-1;i++){
z[i]=y[i]/x[i];
}while (csere){
csere=0;
for (int i=0;i<=n-1;i++){
if (z[i]>z[i+1]){
swap(z[i],z[i+1]);
swap(y[i],y[i+1]);
swap(x[i],x[i+1]);
csere=1;
}
}
}
while (x[k]<m){
if (m-x[k]>=0){
m-=x[k];
osz+=y[k];
k--;
}
}
while(m>0){
l=(float)m/x[k];
osz+=(float)y[k]*l;
}
ofstream g("rucsac.out");
g << osz;
g.close();
return 0;
}