Cod sursa(job #1112444)

Utilizator krisztian1997Kristo Krisztian krisztian1997 Data 19 februarie 2014 19:33:01
Problema Energii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#define maxim 2000000000
#define min(a,b) (a<b?a:b)
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");


int N,W,E[5005],C[5005],s[17005],solutie;
char uz[5005];

int main(){
    f>>N>>W;
    for(int i=1;i<=N;i++)
        f>>E[i]>>C[i];

    solutie=maxim;
    for(int i=1;i<=17000;i++)
        s[i]=maxim;


    uz[0]=1;
    for(int j=1;j<=N;j++)
        for(int k=W;k>=0;k--)
            if(uz[k]){
                s[k+E[j]]=min(s[k]+C[j],s[k+E[j]]);
                uz[k+E[j]]=1;
                if(k+E[j]>=W)
                    solutie=min(solutie,s[k+E[j]]);
            }

    if(solutie==maxim)
        g<<"-1"<<endl;
    else
        g<<solutie<<endl;


    f.close();
    g.close();
    return 0;

}