제출 #558904

#제출 시각아이디문제언어결과실행 시간메모리
558904OlympiaBrunhilda’s Birthday (BOI13_brunhilda)C++17
13.17 / 100
1104 ms84060 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int M, Q; cin >> M >> Q; vector<int> p(M); for (int i = 0; i < M; i++) { cin >> p[i]; } sort(p.begin(), p.end()); int mx = 10000000; int res[mx]; int lpf[mx]; for (int i = 0; i < mx; i++) { lpf[i] = -1; } for (int j = 0; j < p.size(); j++) { for (int i = p[j]; i < mx; i += p[j]) { lpf[i] = j; } } int dp[M]; multiset<int> ms; for (int i = 0; i < M; i++) { dp[i] = 0; ms.insert(dp[i]); } for (int i = 1; i < mx; i++) { int ans = 1e9; if (lpf[i] == -1) { ans = *ms.begin() + 1; } else { vector<int> invalid; int x = i; while (lpf[x] != -1) { invalid.push_back(lpf[x]); int a = p[lpf[x]]; while (x % a == 0) x /= a; } for (int j: invalid) { ms.erase(ms.find(dp[j])); } if (!ms.empty()) { ans = *ms.begin() + 1; } for (int j: invalid) { ms.insert(dp[j]); } for (int j: invalid) { if (j >= 0 && j < (int)p.size()) { ms.erase(ms.find(dp[j])); dp[j] = ans; ms.insert(dp[j]); } } } res[i] = ans; } while (Q--) { int x; cin >> x; if (res[x] == (int)1e9) { cout << "oo\n"; } else { cout << res[x] << '\n'; } } }

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

brunhilda.cpp: In function 'int main()':
brunhilda.cpp:18:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for (int j = 0; j < p.size(); j++) {
      |                     ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...