Cod sursa(job #2935940)

Utilizator RolandPetreanPetrean Roland RolandPetrean Data 7 noiembrie 2022 18:34:00
Problema Energii Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.59 kb
// https://infoarena.ro/problema/energii
#include <bits/stdc++.h>
using namespace std;

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

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

  int sum=0;
  vector<int> e(g+1), p(g+1);
  for (int i=1; i<=g; ++i) {
    fin>>e[i]>>p[i];
    sum += e[i];
  }

  vector<int> dp(sum+1, INT_MAX);
  dp[0] = 0;
  for (int i=1; i<=g; ++i) {
    for (int j=sum; j>=e[i]; --j) {
      if (dp[j-e[i]] != INT_MAX) dp[j] = min(dp[j], p[i]+dp[j-e[i]]);
    }
  }

  int ans=INT_MAX;
  for (int i=w; i<=sum; ++i) ans = min(ans, dp[i]);
  if (ans==INT_MAX) ans = -1;
  fout<<ans;
}