답안 #272989

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
272989 2020-08-19T01:01:20 Z hamerin Detecting Molecules (IOI16_molecules) C++17
9 / 100
1 ms 384 KB
#include "molecules.h"

#include <bits/stdc++.h>

#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")

using namespace std;

using i64 = long long;
using d64 = long double;
using pi = pair<int, int>;
using pli = pair<i64, i64>;
using ti = tuple<int, int, int>;
using tli = tuple<i64, i64, i64>;

#define iterall(cont) cont.begin(), cont.end()
#define prec(n) setprecision(n) << fixed

vector<int> find_subset(int l, int u, vector<int> w) {
    const int N = w.size();

    vector<pli> wei;
    for (int i = 0; i < N; i++) wei.emplace_back(w[i], i);
    sort(iterall(wei));

    vector<int> mp(N);
    for (int i = 0; i < N; i++) mp[wei[i].second] = i;

    // prefix sum
    vector<i64> ps(N + 1);
    for (int i = 1; i <= N; i++) ps[i] = ps[i - 1] + wei[i - 1].first;

    function<i64(int, int)> rangeSum = [&ps](int _l, int _r) {
        return ps[_r + 1] - ps[_l];
    };

    function<void(vector<int>&)> sanitize = [&mp](vector<int> &v) {
        for(auto &el:v) el = mp[el];
    };

    for (int iv = 0; iv < N; iv++) {
        auto lBound = rangeSum(0, iv);
        auto rBound = rangeSum(N - 1 - iv, N - 1);

        if (l <= lBound && lBound <= u) {
            vector<int> ret;
            for (int k = 0; k <= iv; k++) ret.emplace_back(k);
            sanitize(ret);
            return ret;
        }

        if (l <= rBound && rBound <= u) {
            vector<int> ret;
            for (int k = N - 1 - iv; k <= N - 1; k++) ret.emplace_back(k);
            sanitize(ret);
            return ret;
        }

        if (lBound <= l && u <= rBound) {
            for (int j = 0; j < N - 1 - iv; j++) {
                if (l <= rangeSum(j, j + iv) && rangeSum(j, j + iv) <= u) {
                    vector<int> ret;
                    for (int k = j; k <= j + iv; k++) ret.emplace_back(k);
                    sanitize(ret);
                    return ret;
                }
            }
        }
    }

    return vector<int>();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB OK (n = 1, answer = NO)
2 Correct 0 ms 256 KB OK (n = 1, answer = NO)
3 Correct 0 ms 256 KB OK (n = 1, answer = YES)
4 Correct 0 ms 256 KB OK (n = 2, answer = YES)
5 Correct 1 ms 256 KB OK (n = 2, answer = YES)
6 Correct 1 ms 256 KB OK (n = 3, answer = YES)
7 Correct 1 ms 256 KB OK (n = 3, answer = YES)
8 Correct 0 ms 256 KB OK (n = 3, answer = YES)
9 Correct 1 ms 324 KB OK (n = 3, answer = YES)
10 Correct 1 ms 256 KB OK (n = 3, answer = YES)
11 Correct 1 ms 256 KB OK (n = 3, answer = YES)
12 Correct 0 ms 256 KB OK (n = 3, answer = YES)
13 Correct 1 ms 256 KB OK (n = 3, answer = NO)
14 Correct 0 ms 256 KB OK (n = 3, answer = YES)
15 Correct 1 ms 256 KB OK (n = 3, answer = YES)
16 Correct 0 ms 256 KB OK (n = 3, answer = NO)
17 Correct 0 ms 256 KB OK (n = 3, answer = NO)
18 Correct 1 ms 256 KB OK (n = 100, answer = NO)
19 Correct 1 ms 256 KB OK (n = 100, answer = YES)
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 256 KB OK (n = 12, answer = YES)
2 Correct 1 ms 256 KB OK (n = 12, answer = YES)
3 Correct 0 ms 256 KB OK (n = 12, answer = NO)
4 Correct 0 ms 256 KB OK (n = 12, answer = NO)
5 Correct 1 ms 256 KB OK (n = 12, answer = YES)
6 Correct 0 ms 256 KB OK (n = 12, answer = YES)
7 Correct 1 ms 256 KB OK (n = 12, answer = YES)
8 Correct 1 ms 384 KB OK (n = 12, answer = YES)
9 Correct 0 ms 256 KB OK (n = 6, answer = YES)
10 Correct 1 ms 256 KB OK (n = 12, answer = YES)
11 Correct 1 ms 256 KB OK (n = 100, answer = NO)
12 Incorrect 0 ms 256 KB sum of weights should be in [50..51] but it is 33
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB OK (n = 1, answer = NO)
2 Correct 0 ms 256 KB OK (n = 1, answer = NO)
3 Correct 0 ms 256 KB OK (n = 1, answer = YES)
4 Correct 0 ms 256 KB OK (n = 2, answer = YES)
5 Correct 1 ms 256 KB OK (n = 2, answer = YES)
6 Correct 1 ms 256 KB OK (n = 3, answer = YES)
7 Correct 1 ms 256 KB OK (n = 3, answer = YES)
8 Correct 0 ms 256 KB OK (n = 3, answer = YES)
9 Correct 1 ms 324 KB OK (n = 3, answer = YES)
10 Correct 1 ms 256 KB OK (n = 3, answer = YES)
11 Correct 1 ms 256 KB OK (n = 3, answer = YES)
12 Correct 0 ms 256 KB OK (n = 3, answer = YES)
13 Correct 1 ms 256 KB OK (n = 3, answer = NO)
14 Correct 0 ms 256 KB OK (n = 3, answer = YES)
15 Correct 1 ms 256 KB OK (n = 3, answer = YES)
16 Correct 0 ms 256 KB OK (n = 3, answer = NO)
17 Correct 0 ms 256 KB OK (n = 3, answer = NO)
18 Correct 1 ms 256 KB OK (n = 100, answer = NO)
19 Correct 1 ms 256 KB OK (n = 100, answer = YES)
20 Correct 0 ms 256 KB OK (n = 12, answer = YES)
21 Correct 1 ms 256 KB OK (n = 12, answer = YES)
22 Correct 0 ms 256 KB OK (n = 12, answer = NO)
23 Correct 0 ms 256 KB OK (n = 12, answer = NO)
24 Correct 1 ms 256 KB OK (n = 12, answer = YES)
25 Correct 0 ms 256 KB OK (n = 12, answer = YES)
26 Correct 1 ms 256 KB OK (n = 12, answer = YES)
27 Correct 1 ms 384 KB OK (n = 12, answer = YES)
28 Correct 0 ms 256 KB OK (n = 6, answer = YES)
29 Correct 1 ms 256 KB OK (n = 12, answer = YES)
30 Correct 1 ms 256 KB OK (n = 100, answer = NO)
31 Incorrect 0 ms 256 KB sum of weights should be in [50..51] but it is 33
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB OK (n = 1, answer = NO)
2 Correct 0 ms 256 KB OK (n = 1, answer = NO)
3 Correct 0 ms 256 KB OK (n = 1, answer = YES)
4 Correct 0 ms 256 KB OK (n = 2, answer = YES)
5 Correct 1 ms 256 KB OK (n = 2, answer = YES)
6 Correct 1 ms 256 KB OK (n = 3, answer = YES)
7 Correct 1 ms 256 KB OK (n = 3, answer = YES)
8 Correct 0 ms 256 KB OK (n = 3, answer = YES)
9 Correct 1 ms 324 KB OK (n = 3, answer = YES)
10 Correct 1 ms 256 KB OK (n = 3, answer = YES)
11 Correct 1 ms 256 KB OK (n = 3, answer = YES)
12 Correct 0 ms 256 KB OK (n = 3, answer = YES)
13 Correct 1 ms 256 KB OK (n = 3, answer = NO)
14 Correct 0 ms 256 KB OK (n = 3, answer = YES)
15 Correct 1 ms 256 KB OK (n = 3, answer = YES)
16 Correct 0 ms 256 KB OK (n = 3, answer = NO)
17 Correct 0 ms 256 KB OK (n = 3, answer = NO)
18 Correct 1 ms 256 KB OK (n = 100, answer = NO)
19 Correct 1 ms 256 KB OK (n = 100, answer = YES)
20 Correct 0 ms 256 KB OK (n = 12, answer = YES)
21 Correct 1 ms 256 KB OK (n = 12, answer = YES)
22 Correct 0 ms 256 KB OK (n = 12, answer = NO)
23 Correct 0 ms 256 KB OK (n = 12, answer = NO)
24 Correct 1 ms 256 KB OK (n = 12, answer = YES)
25 Correct 0 ms 256 KB OK (n = 12, answer = YES)
26 Correct 1 ms 256 KB OK (n = 12, answer = YES)
27 Correct 1 ms 384 KB OK (n = 12, answer = YES)
28 Correct 0 ms 256 KB OK (n = 6, answer = YES)
29 Correct 1 ms 256 KB OK (n = 12, answer = YES)
30 Correct 1 ms 256 KB OK (n = 100, answer = NO)
31 Incorrect 0 ms 256 KB sum of weights should be in [50..51] but it is 33
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB OK (n = 1, answer = NO)
2 Correct 0 ms 256 KB OK (n = 1, answer = NO)
3 Correct 0 ms 256 KB OK (n = 1, answer = YES)
4 Correct 0 ms 256 KB OK (n = 2, answer = YES)
5 Correct 1 ms 256 KB OK (n = 2, answer = YES)
6 Correct 1 ms 256 KB OK (n = 3, answer = YES)
7 Correct 1 ms 256 KB OK (n = 3, answer = YES)
8 Correct 0 ms 256 KB OK (n = 3, answer = YES)
9 Correct 1 ms 324 KB OK (n = 3, answer = YES)
10 Correct 1 ms 256 KB OK (n = 3, answer = YES)
11 Correct 1 ms 256 KB OK (n = 3, answer = YES)
12 Correct 0 ms 256 KB OK (n = 3, answer = YES)
13 Correct 1 ms 256 KB OK (n = 3, answer = NO)
14 Correct 0 ms 256 KB OK (n = 3, answer = YES)
15 Correct 1 ms 256 KB OK (n = 3, answer = YES)
16 Correct 0 ms 256 KB OK (n = 3, answer = NO)
17 Correct 0 ms 256 KB OK (n = 3, answer = NO)
18 Correct 1 ms 256 KB OK (n = 100, answer = NO)
19 Correct 1 ms 256 KB OK (n = 100, answer = YES)
20 Correct 0 ms 256 KB OK (n = 12, answer = YES)
21 Correct 1 ms 256 KB OK (n = 12, answer = YES)
22 Correct 0 ms 256 KB OK (n = 12, answer = NO)
23 Correct 0 ms 256 KB OK (n = 12, answer = NO)
24 Correct 1 ms 256 KB OK (n = 12, answer = YES)
25 Correct 0 ms 256 KB OK (n = 12, answer = YES)
26 Correct 1 ms 256 KB OK (n = 12, answer = YES)
27 Correct 1 ms 384 KB OK (n = 12, answer = YES)
28 Correct 0 ms 256 KB OK (n = 6, answer = YES)
29 Correct 1 ms 256 KB OK (n = 12, answer = YES)
30 Correct 1 ms 256 KB OK (n = 100, answer = NO)
31 Incorrect 0 ms 256 KB sum of weights should be in [50..51] but it is 33
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB OK (n = 1, answer = NO)
2 Correct 0 ms 256 KB OK (n = 1, answer = NO)
3 Correct 0 ms 256 KB OK (n = 1, answer = YES)
4 Correct 0 ms 256 KB OK (n = 2, answer = YES)
5 Correct 1 ms 256 KB OK (n = 2, answer = YES)
6 Correct 1 ms 256 KB OK (n = 3, answer = YES)
7 Correct 1 ms 256 KB OK (n = 3, answer = YES)
8 Correct 0 ms 256 KB OK (n = 3, answer = YES)
9 Correct 1 ms 324 KB OK (n = 3, answer = YES)
10 Correct 1 ms 256 KB OK (n = 3, answer = YES)
11 Correct 1 ms 256 KB OK (n = 3, answer = YES)
12 Correct 0 ms 256 KB OK (n = 3, answer = YES)
13 Correct 1 ms 256 KB OK (n = 3, answer = NO)
14 Correct 0 ms 256 KB OK (n = 3, answer = YES)
15 Correct 1 ms 256 KB OK (n = 3, answer = YES)
16 Correct 0 ms 256 KB OK (n = 3, answer = NO)
17 Correct 0 ms 256 KB OK (n = 3, answer = NO)
18 Correct 1 ms 256 KB OK (n = 100, answer = NO)
19 Correct 1 ms 256 KB OK (n = 100, answer = YES)
20 Correct 0 ms 256 KB OK (n = 12, answer = YES)
21 Correct 1 ms 256 KB OK (n = 12, answer = YES)
22 Correct 0 ms 256 KB OK (n = 12, answer = NO)
23 Correct 0 ms 256 KB OK (n = 12, answer = NO)
24 Correct 1 ms 256 KB OK (n = 12, answer = YES)
25 Correct 0 ms 256 KB OK (n = 12, answer = YES)
26 Correct 1 ms 256 KB OK (n = 12, answer = YES)
27 Correct 1 ms 384 KB OK (n = 12, answer = YES)
28 Correct 0 ms 256 KB OK (n = 6, answer = YES)
29 Correct 1 ms 256 KB OK (n = 12, answer = YES)
30 Correct 1 ms 256 KB OK (n = 100, answer = NO)
31 Incorrect 0 ms 256 KB sum of weights should be in [50..51] but it is 33
32 Halted 0 ms 0 KB -