# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1118289 | 2024-11-25T08:19:07 Z | crafticat | Detecting Molecules (IOI16_molecules) | C++17 | 1 ms | 504 KB |
#include <bits/stdc++.h> #include "molecules.h" using namespace std; template<typename T> using V = vector<T>; using ll = long long; using vi = V<int>; using pi = pair<int,int>; constexpr int INF = 1e9 + 7; #define F0R(i, n) for (int i = 0; i < n;i++) #define FOR(i, j , n) for (int i = j ;i < n;i++) vi possible(ll l, ll u, V<ll> w, int k) { int ptrEnd = w.size() - k; //including int ptrStart = 0; // Not including ll curSum = 0; FOR(i, ptrEnd, w.size()) curSum += w[i]; while (curSum > u && ptrStart < k) { curSum -= w[ptrEnd]; ptrEnd++; curSum += w[ptrStart]; ptrStart++; } if (curSum <= u && curSum >= l) { vi vals; F0R(i, ptrStart) vals.push_back(i); FOR(i, ptrEnd, w.size()) { vals.push_back(i); } return vals; } return {}; } std::vector<int> find_subset(int l, int u, std::vector<int> w2) { V<ll> w(w2.size()); F0R(i, w.size()) w[i] = w2[i]; sort(w.begin(), w.end()); ll offset = w[0]; for (auto &x : w) x -= offset; V<ll> prefixSums(w.size() + 1), revPrefixSums(w.size() + 1); // Not including, including F0R(i, w.size()) { prefixSums[i + 1] = prefixSums[i] + w[i]; } F0R(i, w.size()) { prefixSums[i] = prefixSums[i + 1] + w[i]; } FOR(k, 1, w.size() + 1) { if ((prefixSums[k + 1] >= ll(l - k * offset)) && revPrefixSums[k] <= ll(u - k * offset)) { auto r = possible(l - k * offset, u - k * offset, w, k); if (!r.empty()) return r; } } return {}; } #if DEBUG int main() { int n, l, u; assert(3 == scanf("%d %d %d", &n, &l, &u)); std::vector<int> w(n); for (int i = 0; i < n; i++) assert(1 == scanf("%d", &w[i])); std::vector<int> result = find_subset(l, u, w); printf("%d\n", (int)result.size()); for (int i = 0; i < (int)result.size(); i++) printf("%d%c", result[i], " \n"[i == (int)result.size() - 1]); } #endif
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 352 KB | OK (n = 1, answer = NO) |
2 | Correct | 1 ms | 348 KB | OK (n = 1, answer = NO) |
3 | Correct | 1 ms | 348 KB | OK (n = 1, answer = YES) |
4 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
5 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
6 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
7 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
11 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
12 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
13 | Correct | 1 ms | 348 KB | OK (n = 3, answer = NO) |
14 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
15 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
16 | Correct | 1 ms | 504 KB | OK (n = 3, answer = NO) |
17 | Correct | 1 ms | 352 KB | OK (n = 3, answer = NO) |
18 | Correct | 1 ms | 352 KB | OK (n = 100, answer = NO) |
19 | Correct | 1 ms | 504 KB | OK (n = 100, answer = YES) |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 352 KB | OK (n = 12, answer = YES) |
2 | Correct | 1 ms | 336 KB | OK (n = 12, answer = YES) |
3 | Correct | 1 ms | 336 KB | OK (n = 12, answer = NO) |
4 | Correct | 1 ms | 348 KB | OK (n = 12, answer = NO) |
5 | Correct | 1 ms | 348 KB | OK (n = 12, answer = YES) |
6 | Incorrect | 1 ms | 348 KB | Contestant can not find answer, jury can |
7 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 352 KB | OK (n = 1, answer = NO) |
2 | Correct | 1 ms | 348 KB | OK (n = 1, answer = NO) |
3 | Correct | 1 ms | 348 KB | OK (n = 1, answer = YES) |
4 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
5 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
6 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
7 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
11 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
12 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
13 | Correct | 1 ms | 348 KB | OK (n = 3, answer = NO) |
14 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
15 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
16 | Correct | 1 ms | 504 KB | OK (n = 3, answer = NO) |
17 | Correct | 1 ms | 352 KB | OK (n = 3, answer = NO) |
18 | Correct | 1 ms | 352 KB | OK (n = 100, answer = NO) |
19 | Correct | 1 ms | 504 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 352 KB | OK (n = 12, answer = YES) |
21 | Correct | 1 ms | 336 KB | OK (n = 12, answer = YES) |
22 | Correct | 1 ms | 336 KB | OK (n = 12, answer = NO) |
23 | Correct | 1 ms | 348 KB | OK (n = 12, answer = NO) |
24 | Correct | 1 ms | 348 KB | OK (n = 12, answer = YES) |
25 | Incorrect | 1 ms | 348 KB | Contestant can not find answer, jury can |
26 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 352 KB | OK (n = 1, answer = NO) |
2 | Correct | 1 ms | 348 KB | OK (n = 1, answer = NO) |
3 | Correct | 1 ms | 348 KB | OK (n = 1, answer = YES) |
4 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
5 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
6 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
7 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
11 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
12 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
13 | Correct | 1 ms | 348 KB | OK (n = 3, answer = NO) |
14 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
15 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
16 | Correct | 1 ms | 504 KB | OK (n = 3, answer = NO) |
17 | Correct | 1 ms | 352 KB | OK (n = 3, answer = NO) |
18 | Correct | 1 ms | 352 KB | OK (n = 100, answer = NO) |
19 | Correct | 1 ms | 504 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 352 KB | OK (n = 12, answer = YES) |
21 | Correct | 1 ms | 336 KB | OK (n = 12, answer = YES) |
22 | Correct | 1 ms | 336 KB | OK (n = 12, answer = NO) |
23 | Correct | 1 ms | 348 KB | OK (n = 12, answer = NO) |
24 | Correct | 1 ms | 348 KB | OK (n = 12, answer = YES) |
25 | Incorrect | 1 ms | 348 KB | Contestant can not find answer, jury can |
26 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 352 KB | OK (n = 1, answer = NO) |
2 | Correct | 1 ms | 348 KB | OK (n = 1, answer = NO) |
3 | Correct | 1 ms | 348 KB | OK (n = 1, answer = YES) |
4 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
5 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
6 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
7 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
11 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
12 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
13 | Correct | 1 ms | 348 KB | OK (n = 3, answer = NO) |
14 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
15 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
16 | Correct | 1 ms | 504 KB | OK (n = 3, answer = NO) |
17 | Correct | 1 ms | 352 KB | OK (n = 3, answer = NO) |
18 | Correct | 1 ms | 352 KB | OK (n = 100, answer = NO) |
19 | Correct | 1 ms | 504 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 352 KB | OK (n = 12, answer = YES) |
21 | Correct | 1 ms | 336 KB | OK (n = 12, answer = YES) |
22 | Correct | 1 ms | 336 KB | OK (n = 12, answer = NO) |
23 | Correct | 1 ms | 348 KB | OK (n = 12, answer = NO) |
24 | Correct | 1 ms | 348 KB | OK (n = 12, answer = YES) |
25 | Incorrect | 1 ms | 348 KB | Contestant can not find answer, jury can |
26 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 352 KB | OK (n = 1, answer = NO) |
2 | Correct | 1 ms | 348 KB | OK (n = 1, answer = NO) |
3 | Correct | 1 ms | 348 KB | OK (n = 1, answer = YES) |
4 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
5 | Correct | 1 ms | 348 KB | OK (n = 2, answer = YES) |
6 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
7 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
11 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
12 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
13 | Correct | 1 ms | 348 KB | OK (n = 3, answer = NO) |
14 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
15 | Correct | 1 ms | 348 KB | OK (n = 3, answer = YES) |
16 | Correct | 1 ms | 504 KB | OK (n = 3, answer = NO) |
17 | Correct | 1 ms | 352 KB | OK (n = 3, answer = NO) |
18 | Correct | 1 ms | 352 KB | OK (n = 100, answer = NO) |
19 | Correct | 1 ms | 504 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 352 KB | OK (n = 12, answer = YES) |
21 | Correct | 1 ms | 336 KB | OK (n = 12, answer = YES) |
22 | Correct | 1 ms | 336 KB | OK (n = 12, answer = NO) |
23 | Correct | 1 ms | 348 KB | OK (n = 12, answer = NO) |
24 | Correct | 1 ms | 348 KB | OK (n = 12, answer = YES) |
25 | Incorrect | 1 ms | 348 KB | Contestant can not find answer, jury can |
26 | Halted | 0 ms | 0 KB | - |