Cod sursa(job #2890288)

Utilizator TraianQTraianQ TraianQ Data 15 aprilie 2022 10:29:12
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;
const int NMAX=10001;
int d[NMAX];
int main()
{
    ifstream fin("energii.in");
    ofstream fout("energii.out");
    int n,E,g,p,dr,ans=100000000;
    fin>>n>>E;
    dr=0;
    d[0]=1;
    for(int O=1;O<=n;O++)
    {
        fin>>g>>p;
        if(dr+g<E)
        {
            for(int i=dr;i>=0;i--)
                if(d[i] && (d[i+g]>d[i]+p || d[i+g]==0))
                    d[i+g]=d[i]+p;
        }
        else
        {
            for(int i=dr;i>=E-g;i--)
                if(d[i])
                    ans=min(ans,d[i]+p);
            for(int i=E-g-1;i>=0;i--)
                if(d[i] && (d[i+g]>d[i]+p || d[i+g]==0))
                    d[i+g]=d[i]+p;
        }
        dr=min(E,dr+g);
    }
    if(ans!=100000000)
        fout<<ans-1;
    else
        fout<<-1;
    return 0;
}