Submission #1265151

#TimeUsernameProblemLanguageResultExecution timeMemory
1265151lmquanBrunhilda’s Birthday (BOI13_brunhilda)C++20
100 / 100
303 ms98828 KiB
#define taskname ""
#include <bits/stdc++.h>
using namespace std;
const long long kL = 1e7;

int main() {
  if (fopen(taskname".inp", "r")) {
    freopen(taskname".inp", "r", stdin);
    freopen(taskname".out", "w", stdout);
  }
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int m, q;
  cin >> m >> q;
  vector<int> p(m + 1);
  long long s = 1;
  for (int i = 1; i <= m; i++) {
    cin >> p[i];
    if (s <= kL) {
      s *= p[i];
    }
  }

  vector<int> f(kL + kL / 2 + 5, -1);
  for (int i = 1; i <= m; i++) {
    for (int j = p[i] - 1; j <= kL + kL / 2; j += p[i]) {
      f[j] = p[i] - 1;
    }
  }
  for (int i = kL + kL / 2 - 1; i >= 1; i--) {
    f[i] = max(f[i], f[i + 1] - 1);
  }
  vector<int> dp(kL + 5, 0);
  for (int i = 1; i <= kL; i++) {
    dp[i] = dp[i - f[i]] + 1;
  }

  while (q--) {
    int n;
    cin >> n;
    if (n >= s) {
      cout << "oo";
    } else {
      cout << dp[n];
    }
    cout << '\n';
  }

  return 0;
}

Compilation message (stderr)

brunhilda.cpp: In function 'int main()':
brunhilda.cpp:8:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    8 |     freopen(taskname".inp", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
brunhilda.cpp:9:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |     freopen(taskname".out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...