Cod sursa(job #807416)

Utilizator AnaTudorTudor Ana Maria Mihaela AnaTudor Data 4 noiembrie 2012 18:09:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream>
#include<iostream>
#include<algorithm>
#define maxn 5001
#define maxg 10001
using namespace std;
int P[maxn],H[maxn],O[maxg][maxn];
int main()
{
 fstream f,g;
f.open("energii.in",ios::in);
g.open("energii.out",ios::out);
int N,G;
 f>>N>>G;

 for(int i=1;i<=N;i++)
  f>>H[i]>>P[i];

for(int i = 0; i < N; i++)
  for(int j = 1; j <= G; j++)
     O[i][j] = 200001;

for(int i = 1; i <= N; ++i)
   for(int j = 0; j <= G; ++j)
    { O[i][j] = O[i-1][j];
       if(H[i] <= j)
         O[i][j] = min(O[i][j], O[i-1][j - H[i]] + P[i]);
       else O[i][j]=min(O[i][j],P[i]); }
if(O[N][G]==200001)
  g<<"-1";
else
  g<<O[N][G];

f.close();
g.close();
}