Cod sursa(job #2291738)

Utilizator TheSeekerRobert Cristian Dobra TheSeeker Data 28 noiembrie 2018 16:02:56
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <set>
using namespace std;

ifstream fin ("rucsac.in");
ofstream fout("rucsac.out");

int n,g,i,j;
pair<int,int> v[5005];

void citire(){
    fin>>n>>g;
    for (i=1;i<=n;i++)
        fin>>v[i].first>>v[i].second;
}

void sortare(){
    for (i=1;i<n;i++)
        for (j=i+1;j<=n;j++)
            if (v[i].first<v[j].first)
                swap(v[i],v[j]);
    for (i=1;i<n;i++)
        for (j=i+1;j<=n;j++)
            if (v[i].second<v[j].second && v[i].first==v[j].first)
                swap(v[i],v[j]);
}

int rucsac(){
    int k=0;
    int i=0;
    int sol=0;
    while (k<g && i<n){
        i++;
        if (k+v[i].first<=g){
            k+=v[i].first;
            sol+=v[i].second;
        }
    }
    return sol;
}

int main(){
    citire();
    sortare();
    fout<<rucsac();
    fin.close();
    fout.close();
    return 0;
}