Cod sursa(job #1542588)

Utilizator MateiGramaGrama Matei MateiGrama Data 5 decembrie 2015 14:57:52
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;
#define INF 12345678
ifstream fin("energii.in");
ofstream fout("energii.out");

///cost[j] = costul minim necesar pentru a produce energia j daca j< w
///cost[j] = costul minim necesar pentru a produce energia >= w



int g,w, emax, c[1001],e[1001],cost[5001];

int main()
{
    fin>>g>>w ;

    for(int i=1;i<=g;i++)
      fin>>e[i]>>c[i];

    for(int i=1;i<=w;i++)
      cost[i]=INF;
    cost[0]=0;
    for(int i=1;i<=g;i++)
      for(int j=w+e[i]-1;j>=e[i];j--){
        if(cost[j-e[i]]!=INF){
          if(j>=w)
            if(cost[j-e[i]]+c[i]<cost[w])
              cost[w]=cost[j-e[i]]+c[i];
            else;
          else
            if(cost[j-e[i]]+c[i]<cost[j])
              cost[j]=cost[j-e[i]]+c[i];
        }
      }
      if(cost[w]==INF)
        fout<<-1;
      else
        fout<<cost[w];


    return 0;
}