Cod sursa(job #2356909)

Utilizator serafimalex2001Serafim Alex serafimalex2001 Data 26 februarie 2019 23:23:34
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <set>
using namespace std;

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

int a[10005][1015],n,E,g[100005],c[100005];

set<int, greater<int> > S;

void Citire()
{
    set<int, greater<int> >::iterator it;
    int i,j,emax=0,w,minim=10000005;
    for(i=0; i<=10004; ++i)
        for(j=0; j<=1004; ++j)
            a[i][j]=100005;
    fin>>n>>E;
    for(i=1; i<=n; ++i)
    {
        fin>>g[i]>>c[i];
        a[g[i]][i]= min(c[i],a[g[i]][i-1]);
        for(it=S.begin(); it!=S.end(); ++it)
        {
            w=*it;
            if(w+g[i]<10005)
            a[w+g[i]][i]=min( a[w+g[i]][i-1], a[w][i-1]+c[i] );
            if(w+g[i]<10005)
            S.insert(w+g[i]);

        }
        S.insert(g[i]);
    }
    for(i=E; i<=10004; ++i)
        minim=min(minim, a[i][n]);
    fout<<minim;

}

int main()
{
    Citire();
    return 0;
}