답안 #558882

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
558882 2022-05-08T23:11:21 Z Olympia Brunhilda’s Birthday (BOI13_brunhilda) C++17
7.77778 / 100
54 ms 13532 KB
#include <bits/stdc++.h>
using namespace std;
template<class T> struct Seg { // comb(ID,b) = b
	const T ID = 1e9; T comb(T a, T b) { return min(a,b); }
	int n; vector<T> seg;
	void init(int _n) { n = _n; seg.assign(2*n,ID); }
	void pull(int p) { seg[p] = comb(seg[2*p],seg[2*p+1]); }
	void upd(int p, T val) { // set val at position p
		seg[p += n] = val; for (p /= 2; p; p /= 2) pull(p); }
	T query(int l, int r) {	// min on interval [l, r]
		T ra = ID, rb = ID;
		for (l += n, r += n+1; l < r; l /= 2, r /= 2) {
			if (l&1) ra = comb(ra,seg[l++]);
			if (r&1) rb = comb(seg[--r],rb);
		}
		return comb(ra,rb);
	}
};
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int M, Q; cin >> M >> Q;
    vector<int> p(M);
    Seg<int> st;
    st.init(M + 1);
    map<int,int> primes;
    for (int i = 0; i < M; i++) {
        cin >> p[i];
        st.upd(i, 0);
    }
    sort(p.begin(), p.end());
    for (int i = 0; i < M; i++) {
        primes[p[i]] = i;
        st.upd(i, 0);
    } 
    int mx = 10000;
    int res[mx];
    bool isPrime[mx];
    for (int i = 0; i < mx; i++) {
        isPrime[i] = true;
    }
    isPrime[0] = isPrime[1] = false;
    vector<int> fact[mx];
    for (int i = 2; i < mx; i++) {
        if (isPrime[i]) {
            for (int j = 2 * i; j < mx; j += i) {
                isPrime[j] = false;
                if (primes.count(i)) fact[j].push_back(primes[i]);
            }
            if (primes.count(i)) fact[i].push_back(primes[i]);
        }
    }
    for (int i = 1; i < mx; i++) {
        int ans = 1e9;
        vector<int> invalid;
        invalid.push_back(-1);
        for (int j: fact[i]) {
            invalid.push_back(j);
        }
        invalid.push_back(p.size());
        for (int j = 0; j < min((int)invalid.size() - 1, (int)2); j++) {
            if (invalid[j] + 1 <= invalid[j + 1] - 1) {
                ans = min(ans, st.query(invalid[j] + 1, invalid[j + 1] - 1) + 1);
            }
        }
        for (int j = max(0, (int)invalid.size() - 2); j < (int)invalid.size() - 1; j++) {
            if (invalid[j] + 1 <= invalid[j + 1] - 1) {
                ans = min(ans, st.query(invalid[j] + 1, invalid[j + 1] - 1) + 1);
            }
        }
        for (int j: invalid) {
            if (j >= 0 && j < (int)p.size()) {
                st.upd(j, ans);
            }
        }
        res[i] = ans;
    }
    while (Q--) {
        int x;
        cin >> x;
        if (res[x] == (int)1e9) {
            cout << "oo\n";
        } else {
            cout << res[x] << '\n';
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 596 KB Output is correct
2 Incorrect 3 ms 724 KB Output isn't correct
3 Incorrect 2 ms 724 KB Output isn't correct
4 Incorrect 3 ms 596 KB Output isn't correct
5 Correct 2 ms 596 KB Output is correct
6 Correct 2 ms 596 KB Output is correct
7 Incorrect 2 ms 724 KB Output isn't correct
8 Incorrect 2 ms 724 KB Output isn't correct
9 Correct 3 ms 852 KB Output is correct
10 Incorrect 3 ms 852 KB Output isn't correct
11 Incorrect 3 ms 724 KB Output isn't correct
12 Correct 2 ms 596 KB Output is correct
13 Correct 5 ms 852 KB Output is correct
14 Correct 6 ms 980 KB Output is correct
15 Incorrect 4 ms 724 KB Output isn't correct
16 Incorrect 2 ms 840 KB Output isn't correct
17 Incorrect 4 ms 724 KB Output isn't correct
18 Incorrect 4 ms 640 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 7 ms 2560 KB Execution killed with signal 11
2 Runtime error 42 ms 12020 KB Execution killed with signal 11
3 Runtime error 34 ms 9972 KB Execution killed with signal 11
4 Runtime error 4 ms 1568 KB Execution killed with signal 11
5 Runtime error 25 ms 7560 KB Execution killed with signal 11
6 Runtime error 3 ms 1492 KB Execution killed with signal 11
7 Runtime error 7 ms 2516 KB Execution killed with signal 11
8 Runtime error 3 ms 1364 KB Execution killed with signal 11
9 Runtime error 33 ms 10028 KB Execution killed with signal 11
10 Runtime error 37 ms 9936 KB Execution killed with signal 11
11 Runtime error 20 ms 6348 KB Execution killed with signal 11
12 Runtime error 6 ms 1748 KB Execution killed with signal 11
13 Runtime error 4 ms 1492 KB Execution killed with signal 11
14 Runtime error 4 ms 1544 KB Execution killed with signal 11
15 Runtime error 21 ms 6612 KB Execution killed with signal 11
16 Runtime error 40 ms 11988 KB Execution killed with signal 11
17 Runtime error 6 ms 1984 KB Execution killed with signal 11
18 Runtime error 45 ms 13388 KB Execution killed with signal 11
# 결과 실행 시간 메모리 Grader output
1 Runtime error 23 ms 7564 KB Execution killed with signal 11
2 Runtime error 32 ms 7824 KB Execution killed with signal 11
3 Runtime error 23 ms 7636 KB Execution killed with signal 11
4 Runtime error 6 ms 1956 KB Execution killed with signal 11
5 Runtime error 40 ms 12792 KB Execution killed with signal 11
6 Runtime error 7 ms 2516 KB Execution killed with signal 11
7 Runtime error 45 ms 13292 KB Execution killed with signal 11
8 Runtime error 25 ms 7500 KB Execution killed with signal 11
9 Runtime error 25 ms 7508 KB Execution killed with signal 11
10 Runtime error 7 ms 2132 KB Execution killed with signal 11
11 Runtime error 8 ms 1876 KB Execution killed with signal 11
12 Runtime error 10 ms 2260 KB Execution killed with signal 11
13 Runtime error 22 ms 5160 KB Execution killed with signal 11
14 Runtime error 4 ms 1492 KB Execution killed with signal 11
15 Runtime error 7 ms 2260 KB Execution killed with signal 11
16 Runtime error 8 ms 2448 KB Execution killed with signal 11
17 Runtime error 23 ms 6872 KB Execution killed with signal 11
18 Runtime error 26 ms 7836 KB Execution killed with signal 11
19 Runtime error 4 ms 1876 KB Execution killed with signal 11
20 Runtime error 25 ms 7500 KB Execution killed with signal 11
21 Runtime error 4 ms 1492 KB Execution killed with signal 11
22 Runtime error 54 ms 13472 KB Execution killed with signal 11
23 Runtime error 17 ms 4652 KB Execution killed with signal 11
24 Runtime error 4 ms 1236 KB Execution killed with signal 11
25 Runtime error 6 ms 1876 KB Execution killed with signal 11
26 Runtime error 6 ms 1876 KB Execution killed with signal 11
27 Runtime error 46 ms 13532 KB Execution killed with signal 11
28 Runtime error 3 ms 1236 KB Execution killed with signal 11
29 Runtime error 43 ms 13440 KB Execution killed with signal 11
30 Runtime error 34 ms 9756 KB Execution killed with signal 11
31 Runtime error 5 ms 1748 KB Execution killed with signal 11
32 Runtime error 4 ms 1660 KB Execution killed with signal 11
33 Runtime error 3 ms 1236 KB Execution killed with signal 11
34 Runtime error 43 ms 13316 KB Execution killed with signal 11
35 Runtime error 3 ms 1492 KB Execution killed with signal 11
36 Runtime error 42 ms 12304 KB Execution killed with signal 11
37 Runtime error 52 ms 12788 KB Execution killed with signal 11
38 Runtime error 8 ms 2516 KB Execution killed with signal 11
39 Runtime error 4 ms 1304 KB Execution killed with signal 11
40 Runtime error 9 ms 2704 KB Execution killed with signal 11
41 Runtime error 42 ms 13292 KB Execution killed with signal 11
42 Runtime error 6 ms 2004 KB Execution killed with signal 11