Cod sursa(job #1012603)

Utilizator profcntvProfCNTV profcntv Data 19 octombrie 2013 13:21:03
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
# include <fstream>
using namespace std;
# define inf 3000000
ifstream fin("energii.in");
ofstream fout("energii.out");

int n,Wt,E[1001],C[1001],Ct[5001],Min=inf;
int main()
{
    int i,j;
    fin>>n>>Wt;
    for (i=1;i<=n;++i)
        fin>>E[i]>>C[i];
    //initializam costul minim
    for (i=1;i<=Wt;++i)
        Ct[i]=inf;
    // Ct[j] = costul minim necesar pentru a da o energie >=j, folosind primele i generatoare
    Ct[0]=0;
    for (i=1;i<=n;++i)
    {
        for (j=Wt; j>=0; --j)
          if (Ct[j] != inf)
          {
             if (j + E[i] > Wt)
             {
                 if (Ct[Wt] > Ct[j] + C[i])
                    Ct[Wt] = Ct[j] + C[i];
             }
             else
                 if (Ct[j + E[i]] > Ct[j] + C[i])
                    Ct[j + E[i]] = Ct[j] + C[i];

          }
    }
    if (Ct[Wt]==inf) fout<<"-1\n";
                else fout<<Ct[Wt]<<"\n";
    return 0;
}