Cod sursa(job #1276284)

Utilizator robx12lnLinca Robert robx12ln Data 26 noiembrie 2014 09:49:52
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<cstring>
#define INF 50000001
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int min(int a,int b){
    if(a>b)
        return b;
    else
        if(b>a)
            return a;
        if(b==a)
            return a;
}
int n,w,i,j;
long long  W[5003],d[10001],C[5003];
int main(){
    fin>>n>>w;
    for(i=1;i<=n;i++) {
        fin>>W[i]>>C[i];
    }
    for(i=1;i<=w;i++)
        d[i]=INF;
    d[0]=0;
    for(i=1;i<=n;i++){
        for(j=w;j>=0;j--)
            if(d[j]!=INF) {
                if(j+W[i]>w){
                    if(min(d[w],d[j]+C[i])>w)
                        d[w]=min(d[w],d[j]+C[i]);
                }else{
                    d[j+W[i]]=min(d[j+W[i]],d[j]+C[i]);
                }
            }
    }
    if(d[w]==INF){
        fout<<-1;
        return 0;
    }
    fout<<d[w];
    return 0;
}