Cod sursa(job #2267897)

Utilizator eilerGabriel-Ciprian Stanciu eiler Data 24 octombrie 2018 10:32:47
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
using namespace std;

int g, w, eg[1000], cg[1000], dp[10000];

int main(){
    int i, j;

    ifstream  fin ("energii.in");
    fin >> g >> w;
    for (i=0; i<g; i++)
        fin >> eg[i] >> cg[i];
    fin.close();

    for (i=0; i<=w; i++)
        dp[i]=-1;
    dp[0]=0;

    int s=10000000;
    for (i=0; i<g; i++)
        for (j=w-1; j>=0; j--)
            if (dp[j]!=-1){
                if (eg[i]+j>=w)
                    s=min(s, dp[j]+cg[i]);
                if (eg[i]+j<w){
                    if (dp[j+eg[i]]==-1)
                        dp[j+eg[i]]=dp[j]+cg[i];
                    else
                        dp[j+eg[i]]=min(dp[j+eg[i]], dp[j]+cg[i]);
                }
            }
    if (s==10000000)
        s=-1;

    ofstream fout ("energii.out");
    fout << s;
    fout.close();

    return 0;
}