Cod sursa(job #2122301)

Utilizator Cristian25Cristian Stanciu Cristian25 Data 4 februarie 2018 21:06:54
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define nr 5000

using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
pair<int,int> v[nr];
int N,G;
bool cond(pair<int,int> a,pair<int,int> b)
{
    return a.second>b.second;
}
int main()
{
    in>>N>>G;
    for(int i=0;i<N;++i)
        in>>v[i].first>>v[i].second;
    sort(v,v+N,cond);
    int cmax=0;
    for(int i=0;i<N;++i)
    {
        int count,pos=i,sum;
        count=sum=0;
        while(count+v[pos].first<G && pos<N)
        {
            count+=v[pos].first;
            sum+=v[pos].second;
            ++pos;
        }
        if(count+v[pos].first>G)
            cmax=max(sum,cmax);
        else cmax=max(sum+v[pos].second,cmax);
        if(N==pos)
            break;
    }
    out<<cmax;
    return 0;
}