Cod sursa(job #1866096)

Utilizator vlad2004SuntUnNanoTub vlad2004 Data 2 februarie 2017 17:27:37
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>

using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");

const int smax=10000;
const int nmax=5000;
int energie_produsa[smax+1],cost_energie_produsa[smax+1],cost_energie_pas[smax+1];
bool v[smax+1];

int main()
{
    int g,w;
    in>>g>>w;
    int sum=0;
    for(int i=1; i<=g; i++)
    {
        in>>energie_produsa[i]>>cost_energie_produsa[i];
        sum+=energie_produsa[i];
    }
    v[0]=1;
    for(int i=0; i<=sum; i++)
    {
        cost_energie_pas[i]=smax+1;
    }
    cost_energie_pas[0]=0;

    for(int i=1; i<=g; i++)
    {
        for(int j=sum; j>=0; j--)
        {
                if(v[j]==1)
                {
                    v[j+energie_produsa[i]]=1;
                    if(cost_energie_produsa[i]+cost_energie_pas[j] < cost_energie_pas[j+energie_produsa[i]])
                    cost_energie_pas[j+energie_produsa[i]] = cost_energie_produsa[i]+cost_energie_pas[j];
                }
        }
    }
    int min=1000000;
    for(int i=w; i<=sum; i++)
    {
        if(cost_energie_pas[i]<min)
        min=cost_energie_pas[i];
    }
    out<<min;
    return 0;
}