Cod sursa(job #907132)

Utilizator CrescentselectJicol Crescent Crescentselect Data 7 martie 2013 17:34:15
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<iostream>
#include <fstream>
#include<algorithm>
#include<vector>

using namespace std;

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

# define N 5001
# define M 10001

int g[N],p[N],v[M];

int n, G,maxim;

void citire()
{
    in>>n>>G;
    for( int i=1;i<=n;i++)
    {
        in>>g[i]>>p[i];
    }
}
void proces()
{
    for( int i=1;i<=n;i++)
    {
        for( int j = G - g[i]; j>0; j--)
        {
            if(v[j]!=0)
            {
                if(v[j]+p[i] > v[j+g[i]])
                {
                    v[j+g[i]] = v[j]+p[i];
                }
            }
        }
        if(g[i]<= G && p[i]>v[g[i]])
        {
            v[g[i]]= p[i];
        }
    }
    for( int i=1;i<=G;i++)
    {
        if(v[i]>maxim)
        {
            maxim=v[i];
        }
    }
    out<<maxim;
}
int main()
{
    citire();
    proces();
    return 0;
}