Cod sursa(job #2214930)

Utilizator chillimihaimarcu chilli Data 20 iunie 2018 16:02:02
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#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;
}