Cod sursa(job #940393)

Utilizator alexblackFMI - Dumitrache Alexandru alexblack Data 16 aprilie 2013 09:01:18
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("energii.in");
ofstream out("energii.out");
int const N=1005;
int const W=5005;
int const M=20000;
int const MAXI=1<<28;
int g,w,e[N],c[N],cost[M];
void init()
{
    for(int i=1;i<M;i++)
        cost[i]=MAXI;
}
int mini(int x, int y)
{
    if(x<y) return x;
    return y;
}
int main()
{
    in>>g>>w;   int sum=0;
    for(int i=1;i<=g;i++)
    {
        in>>e[i]>>c[i];
        sum+=e[i];
    }
    if(sum<w){out<<"-1\n";return 0;}
    init();
    for(int i=1;i<=g;i++)
        for(int j=w;j>=0;j--)
            if (cost[j]!=MAXI)
                if(cost[j+e[i]]>cost[j]+c[i])
                    cost[j+e[i]]=cost[j]+c[i];
    int minim=MAXI;
    for(int i=w;i<M;i++)
        minim=mini(cost[i],minim );
    out<<minim<<"\n";
    return 0;
}