Cod sursa(job #1049316)

Utilizator LauraAb.Laura Abef LauraAb. Data 7 decembrie 2013 10:30:11
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
int w,g;
struct energii
{
    int e,c;
};
energii gn[1005];
int energie, minim;
int a[1005][5005];
void Citire()
{
    ifstream f("energii.in");
    f>>g>>w;
    int i;
    for(i=1;i<=g;i++)
   {
       f>>gn[i].e>>gn[i].c;
       energie+=gn[i].e;
   }
}

void Solve()
{
    int i,j;
   // a[i][j]= costul minim obtinerii energiei j alegand o submultime
             //din primele i generatoare
   // a[i][j]= min(a[i-1][j] ,  a[i-1][j - gn[i].e] + gn[i].c)

    for(i=1;i<=g;i++)
      for(j=1;j<=5002;j++)
        a[i][j]= 10000000;

    a[1][gn[1].e]=gn[1].c;

   for(i=2;i<=g;i++)
     for(j=1;j<=5001;j++)
              if(j>=gn[i].e)
               a[i][j]= min(a[i-1][j] ,  a[i-1][j - gn[i].e] + gn[i].c);
}

void Afisare()
{
    ofstream fout("energii.out");
    if(energie < w) fout<<"-1\n";
    else
    {
        Solve();
//        minim=1000000;
//        for(int i=w;i<=5002;i++)
//            minim=min(minim, a[g][i]);
//        fout<<minim<<"\n";

fout<<a[g][w]<<"\n";
    }
    fout.close();
}

int main()
{
   Citire();
   Afisare();

    return 0;
}