Cod sursa(job #1900405)

Utilizator KemyKoTeo Virghi KemyKo Data 3 martie 2017 12:53:01
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.63 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

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

struct ob
{
    int g,p,i,dif;
}v[10000],aux;

int n,g;

void citire()
{
    int i;
    fin>>n>>g;
    for (i=1;i<=n;i++)
    {
        fin>>v[i].g>>v[i].p;
        v[i].dif=fabs(v[i].g-v[i].p);
        v[i].i=i;
    }
}
void sortare()
{
    int i,j;
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            if (v[i].dif>v[j].dif)
            {
                aux=v[i];
                v[i]=v[j];
                v[j]=aux;
            }
            else if (v[i].dif==v[j].dif)
            {
                if (v[i].p>v[j].p)
                {
                    aux=v[i];
                    v[i]=v[j];
                    v[j]=aux;
                }
                else if (v[i].p==v[j].p)
                {
                    if (v[i].g<v[j].g)
                    {
                        aux=v[i];
                        v[i]=v[j];
                        v[j]=aux;
                    }
                }
            }
}

int s,pt;

void rez()
{
    int k=1;
    while (s<=g)
    {
        s+=v[k].g;
        pt+=v[k].p;
        k++;
    }
    pt=pt-v[k-1].p;
}
                                                                                    //1 2 4 5 6
void afis()
{
    int i;
    for (i=1;i<=n;i++)
        cout<<"greutate= "<<v[i].g<<" "<<"profit= "<<v[i].p<<" "<<" "<<"nr crt= "<<v[i].i<<" "<<" "<<v[i].dif<<'\n';
}

int main()
{
    citire();
    sortare();
    //afis();
    rez();
    fout<<pt;
    return 0;
}