Cod sursa(job #1825802)

Utilizator ArambasaVlad Arambasa Arambasa Data 9 decembrie 2016 17:38:30
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int N,W,M,Sol = 2000000000;
int X[100];
int E[1000],C[1000];

void Read()
{
  fin>>N>>W;

  for(int i = 1; i <= N; ++i)
    fin>>E[i]>>C[i];
}

int valid(int k)
{
  if(k > 1 && X[k] <= X[k-1])
    return 0;
  return 1;
}

int solutie(int k)
{
  return (k == M);
}

void Compare(int k)
{
  int S = 0;

  for(int i = 1; i <= k; ++i)
    S += E[X[i]];

  if(S >= W)
  {
    S = 0;
    for(int i = 1; i <= k; ++i)
      S += C[X[i]];
    Sol = min(Sol,S);
  }

}

void Back(int k)
{
  for(int i = 1; i <= N; ++i)
    {
      X[k] = i;
      if(valid(k))
        if(solutie(k))
          Compare(k);
        else
          Back(k+1);
    }
}

int main()
{
    Read();

    for(M = 1; M <= N; M++)
      {
        Back(1);
      }

    fout << Sol;

    return 0;
}