Cod sursa(job #943806)

Utilizator AnonymouslegionAnonymous Anonymouslegion Data 26 aprilie 2013 15:31:46
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<cstring>
#include<fstream>

using namespace std;

int ksup = 1e6 + 1;

int dp[1005][5005];

int main(){
  ifstream in("energii.in");
  ofstream out("energii.out");

  int n, s;

  in >> n >> s;

  memset(dp, 1337, sizeof(dp));
  dp[0][0] = 0;

  for(int i = 1; i <= n; ++i){
    int x, y;
    in >> x >> y;
    for(int j = 0; j <= s; ++j){
      dp[i][j] = min(dp[i][j], dp[i - 1][j]);
      if(j + x > s)
        dp[i][s] = min(dp[i - 1][j] + y, dp[i][s]);
      else
        dp[i][j + x] = min(dp[i - 1][j] + y, dp[i][j + x]);
    }
  }

  if(dp[n][s] > ksup)
    out << "-1";
  else
    out << dp[n][s];

  return 0;
}