Cod sursa(job #2358886)

Utilizator DLaszlo2003Dezso Laszlo DLaszlo2003 Data 28 februarie 2019 13:56:23
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.58 kb
#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;
}