Cod sursa(job #1501820)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 13 octombrie 2015 21:05:02
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
# include <fstream>
using namespace std;
ifstream fin("pusculita.in");
ofstream fout("pusculita.out");
int f[10010],e[1002],c[1002],n,lim,i,sf,j,minim;
int main () {
    fin>>n>>lim;
    for(i=1;i<=n;i++){
        fin>>e[i]>>c[i];
    }
    f[0]=0;
    sf=e[1];
    minim=10010;
    f[e[1]]=c[1];
    for(i=2;i<=n;i++){
        for(j=sf;j>=0;j--){
            if(j==sf){
                sf+=e[i];
            }
            if(f[j]>0){
                if(f[j+e[i]]>0)
                    f[j+e[i]]=min(f[j]+c[i],f[j+e[i]]);
                else
                    f[j+e[i]]=f[j]+c[i];
                if(j+e[i]>=lim){
                    minim=min(f[j+e[i]],minim);
                }
            }
            if(j==0){
                if(f[j+e[i]]>0)
                    f[j+e[i]]=min(f[j]+c[i],f[j+e[i]]);
                else
                    f[j+e[i]]=f[j]+c[i];
                if(j+e[i]>=lim){
                    minim=min(f[j+e[i]],minim);
                }
            }
        }
    }
    fout<<minim;
    fin.close();
    fout.close();
    return 0;
}