제출 #757322

#제출 시각아이디문제언어결과실행 시간메모리
757322The_SamuraiBrunhilda’s Birthday (BOI13_brunhilda)C++17
50.95 / 100
1096 ms79848 KiB
#include "bits/stdc++.h" using namespace std; bool isPrime(int n) { for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return n > 1; } int INF = 1e9; int main() { clock_t startTime = clock(); // int N = 1e4; // vector<int> g(N + 1); // vector<int> dp(N + 1, (int)1e9); // primes = {5, 11, 19}; // dp[0] = 0; // for (int i = 1; i <= N; i++) { // for (int p: primes) { // dp[i] = min(dp[i], dp[i - i % p] + 1); // } // } // for (int i = 1; i <= 100; i++) { // cout << i << " -> " << dp[i] << endl; // } int n, q, N = 1e7; cin >> n >> q; vector<int> primes(n), g(N + 1), dp(N + 1, INF); iota(g.begin(), g.end(), 0); for (int &p: primes) { cin >> p; } reverse(primes.begin(), primes.end()); for (int i = 0; i < n; i++) { int p = primes[i]; for (int j = 0; j <= N; j += p) { for (int k = min(N, j + p - 1); k > j and j < g[k]; k--) { g[k] = j; } } } dp[0] = 0; for (int i = 1; i <= N; i++) { dp[i] = dp[g[i]] + 1; } while (q--) { int x; cin >> x; if (dp[x] >= INF) { cout << "oo\n"; } else { cout << dp[x] << '\n'; } } #ifdef sunnitov cerr << "\nTime: " << (int)((double)(clock() - startTime) / CLOCKS_PER_SEC * 1000); #endif }

컴파일 시 표준 에러 (stderr) 메시지

brunhilda.cpp: In function 'int main()':
brunhilda.cpp:17:13: warning: unused variable 'startTime' [-Wunused-variable]
   17 |     clock_t startTime = clock();
      |             ^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...