Cod sursa(job #1540445)

Utilizator RaduHHarhoi Radu RaduH Data 2 decembrie 2015 20:00:47
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n,g,i,s1,s2,g1,g2;
struct cell
{
    int w,p;
}v[5010],vv[5010];
bool f1(cell a, cell b)
{
    if(a.w!=b.w)
        return a.w<b.w;
    return a.p>b.p;
}
bool f2(cell a, cell b)
{
    if(a.p!=b.p)
        return a.p>b.p;
    return a.w<b.w;
}
int main()
{
    fin>>n>>g;
    for(i=0;i<n;i++)
    {
        fin>>v[i].w>>v[i].p;
        vv[i].w=v[i].w;
        vv[i].p=v[i].p;
    }
    sort(v,v+n,f1);
    sort(vv,vv+n,f2);
    for(i=0;i<n && g1+v[i].w<=g;i++)
    {
        g1+=v[i].w;
        s1+=v[i].p;
    }
    for(i=0;i<n && g2+vv[i].w<=g;i++)
    {
        g2+=vv[i].w;
        s2+=vv[i].p;
    }
    fout<<max(s1,s2);
    fin.close();
    fout.close();
    return 0;
}