Cod sursa(job #1089686)

Utilizator pop_bogdanBogdan Pop pop_bogdan Data 21 ianuarie 2014 21:10:52
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;

ifstream is("energii.in");
ofstream os("energii.out");

void Input();
void Knapsack();

vector<pair<int,int> > V;
int n,g,sol[10000],smax;

int Solution(99999);

int main()
{
    Input();
    Knapsack();
    return 0;
}

void Input()
{
    int x,y;
    is >> n >> g;
    for ( int i = 0; i <= g; ++i )
        sol[i] = 99999;
    for ( int i = 1; i <= n; ++i )
    {
        is >> x >> y;
        smax+=x;
        V.push_back(make_pair(x,y));
    }

}

void Knapsack()
{
    sol[0] = 0;
    for ( int i = 0; i < V.size(); ++i )
        for ( int j = smax; j >= 0; --j )
        {
            if ( sol[j+V[i].first] > sol[j] + V[i].second )
            {
                sol[j+V[i].first] = sol[j] + V[i].second;
                if ( j+V[i].first >= g && sol[j+V[i].first] < Solution )
                    Solution = sol[j+V[i].first];
            }
        }
    os << Solution;
}