Cod sursa(job #1739688)

Utilizator leraValeria lera Data 9 august 2016 22:51:26
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");

long long d[5002];
int minn(int a,int b,int c)
{
    if(a<=b && a<=c)
        return a;
    if(b<=a && b<=c)
        return b;
    //if(c>=a && c>=b)
    return c;
}
int main()
{
    int G,W,i,w,NMAX=100000;
    pair<int,int>p[1002];
    fin>>G>>W;//Generatoare,energia necesara
    for(i=1;i<=G;i++)
        fin>>p[i].first>>p[i].second;//energia,costul
    for(i=1;i<=W+1;i++)
        d[i]=NMAX;
    for(i=1;i<=G;i++)
        {
            for(w=W;w>=p[i].first;w--)
                    d[w]=minn(d[w],d[w-p[i].first]+p[i].second,d[w+1]);
            for(w=p[i].first-1;w>=1;w--)
                d[w]=min(d[w],d[w+1]);
        }
    if(d[W]<NMAX)
    fout<<d[W];
    else
        fout<<-1;
    return 0;
}