Cod sursa(job #1777823)

Utilizator maria15Maria Dinca maria15 Data 12 octombrie 2016 22:04:26
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#define e first
#define p second

using namespace std;

short int G, W, i, j;
int P[10000001], sol, lim;
pair <short int, short int> v[1001];

ifstream fin("energii.in");
ofstream fout("energii.out");

int main(){
    fin>>G>>W;
    for(i=1;i<=G;i++)
        fin>>v[i].e>>v[i].p;
    for(i=1;i<=10000;i++)
        P[i]=10000100;
    P[0]=0;
    sol=10000100;
    lim=W;
    for(i=1;i<=G;i++)
        for(j=lim;j>=0;j--)
            if(P[j]!=10000100){
                P[j+v[i].e] = min(P[j]+v[i].p, P[j+v[i].e]);
                if(j+v[i].e>=W) {
                    if(j+v[i].e>lim)
                        lim=j+v[i].e;
                    if(sol>P[j+v[i].e])
                        sol=P[j+v[i].e];
                }
            }
    if(sol==10000100)
        fout<<"-1";
    else
        fout<<sol;
    return 0;
}