Cod sursa(job #2212754)

Utilizator Raresr14Rosca Rares Raresr14 Data 14 iunie 2018 18:26:39
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int i,j,D[10001],E,p[10001],c[10001],n,minim;
int main(){
    fin>>n>>E;
    for(i=1;i<=n;i++)
        fin>>p[i]>>c[i];
    minim=2000000;
    D[0]=1;
    for(i=1;i<=n;i++)
        for(j=E-1;j>=0;j--)
            if(D[j]!=0){
                if(j==0){
                   if(D[j+p[i]]!=0)
                        D[j+p[i]]=min(D[j]+c[i]-1,D[j+p[i]]);
                   else
                        D[j+p[i]]+=D[j]+c[i]-1;
                if(D[j+p[i]]<minim&&j+p[i]>=E)
                    minim=D[j+p[i]];
                }else{
                    if(D[j+p[i]]!=0)
                        D[j+p[i]]=min(D[j]+c[i],D[j+p[i]]);
                    else
                        D[j+p[i]]+=D[j]+c[i];
                    if(D[j+p[i]]<minim&&j+p[i]>=E)
                        minim=D[j+p[i]];
                }
            }
    if(minim==2000000)
       fout<<-1;
    else
        fout<<minim;
    return 0;
}