Cod sursa(job #1856023)

Utilizator IoanaRocIoana Roceanu IoanaRoc Data 24 ianuarie 2017 14:14:10
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int d[5003][10003];
int main()
{   int n,w,p[1003],e[1003],i,j,s=0,maxt=0;
    in>>n>>w;
    for(i=1;i<=n;i++){
        in>>e[i]>>p[i];
        s+=e[i];
        maxt=max(maxt,e[i]);
        d[1][e[i]]=p[i];
    }

//    for(i=1;i<=maxt;i++)
//        cout<<d[1][i]<<" ";

    for(i=0;i<=n;i++)
        for(j=0;j<=s;j++){
            if(d[i][j]==0)
                d[i][j]=50000;
        }
//
//    for(i=1;i<=n;i++){
//        for(j=1;j<=maxt;j++)
//            out<<d[i][j]<<" ";
//        out<<endl;
//    }

    if(s<w){
        out<<-1;
        return 0;
    }
    for(i=2;i<=n;i++)
        for(j=0;j<=s;j++){
            d[i][j]=d[i-1][j];
            d[i][j]=min(d[i][j],d[i-1][j-e[i]]+p[i]);
        }
//    out<<endl<<endl;
//    for(i=1;i<=n;i++){
//        for(j=0;j<=s;j++)
//            out<<d[i][j]<<" ";
//        out<<endl;
//    }
    int mint=50000;
    for(j=w;j<=s;j++)
        mint=min(mint,d[n][j]);
    out<<mint;
    return 0;

}