Cod sursa(job #907165)

Utilizator CrescentselectJicol Crescent Crescentselect Data 7 martie 2013 17:57:13
Problema Energii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<iostream>
#include <fstream>
#include<algorithm>
#include<vector>

using namespace std;

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

# define N 10001
# define M 100001

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

int n, G,minim = 30000000;
int s;

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