Cod sursa(job #881054)

Utilizator otto1Palaga Vicentiu-Octavian otto1 Data 17 februarie 2013 17:47:19
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
const int N=1002;
const int MAX=10022005;
int n,w,e[N],c[N],maxim,p[MAX],minim=MAX;
void citire()
{
    in>>n>>w;
    for(int i=1;i<=n;i++)
    {
        in>>e[i]>>c[i];
        maxim+=e[i];
    }
}
void init()
{
    for(int i=1;i<=maxim+1;i++)
        p[i]=MAX;
}
int main()
{
    int i;
    citire();
    init();
    for( i=1;i<=n;i++)
    {
        for(int j=w;j>0;j--)
            if(p[j]!=MAX)
                if(p[j]+c[i]<p[j+e[i]])
                    p[j+e[i]]=c[i]+p[j];
        if( p[e[i]]>c[i])
            p[e[i]]=c[i];
    }

    for(i=1;i<=maxim;i++)
        if(p[i]!=0 && i>=w)
            if(p[i]<minim)
                minim=p[i];

    if(minim==MAX)
        out<<-1;
    else
        out<<minim;
    return 0;
}