Cod sursa(job #2415373)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 25 aprilie 2019 21:00:08
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#define OO 10000001
#define maxim 5008


using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");


int n,G,l1,l2,stot;
int ans[2][maxim];

struct
{
 int w,c;
}ob[maxim];


void citire()
{
    f>>n>>G;
    for (int i=1;i<=n;i++)
       {
           f>>ob[i].w>>ob[i].c;
           stot+=ob[i].w;
       }
}

void reset()
{
    for (int i=1;i<=G;i++)
        ans[l1][i]=OO;
}




int main()
{
    citire();
    if (stot<G)
      {g<<-1;
       return 0;
      }
    l1=0;
    l2=1;
    reset();
    for (int i=1;i<=n;i++)
      {
          for (int j=0;j<=G;j++)
            if (ob[i].w >= j)
                ans[l2][j]=min(ob[i].c,ans[l1][j]);
            else ans[l2][j]=min(ans[l1][j],ans[l1][j-ob[i].w]+ob[i].c);

         reset();
         swap(l1,l2);
      }
    if (n%2==0)
    g<<ans[0][G];
    else g<<ans[1][G];

    return 0;


}