# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
284298 | 2020-08-27T07:56:30 Z | user202729 | Detecting Molecules (IOI16_molecules) | C++17 | 1 ms | 384 KB |
// moreflags=grader.cpp // 16 // yes. #include "molecules.h" #include<vector> #include<algorithm> #include<numeric> #if not LOCAL #define NDEBUG 1 #endif #include<cassert> std::vector<int> find_subset(int l, int u, std::vector<int> w) { struct Item{int index, value;}; std::vector<Item> items(w.size()); for(int index=0; index<(int)w.size(); ++index) items[index]={index, w[index]}; int count; { std::vector<int64_t> tmp; tmp.reserve(items.size()); for(auto& it: items) tmp.push_back(it.value); std::partial_sum(begin(tmp), end(tmp), tmp.begin()); count=0; // maximum such that minimum sum <= u for(int step=1<<30; step>>=1;) if(count+step<=(int)tmp.size() and tmp[count+step-1]<=u) count+=step; auto const maxSum=tmp.back()-(count==(int)tmp.size()? 0: tmp.end()[-1-count]); if(maxSum<l) return {}; } // so maximum sum >=l and minimum sum <=u std::vector<char> mark(w.size()); int countLeft=count, countRight=0; int64_t total=0; for(int i=0; i<count; ++i){ mark[i]=true; total+=items[i].value; } assert(total<=u); while(total<l){ --countLeft; ++countRight; assert(mark[countLeft]); assert(not mark[w.size()-countRight]); int64_t const total1=total-items[countLeft].value+items[w.size()-countRight].value; if(total1>u){ int i=countLeft; while(total<l){ assert(mark[i]); assert(not mark[i+1]); mark[i]=false; mark[i+1]=true; total+=items[i+1].value-items[i].value; ++i; } assert(total<=u); break; }else{ total=total1; mark[countLeft]=false; mark[w.size()-countRight]=true; } } int64_t total_{}; std::vector<int> result; result.reserve(count); for(int index=0; index<w.size(); ++index) if(mark[index]){ result.push_back(items[index].index); total_+=items[index].value; } assert(total==total_); assert(l<=total); assert(total<=u); return result; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 3, answer = YES) |
7 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 384 KB | OK (n = 3, answer = YES) |
11 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
12 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
13 | Correct | 0 ms | 256 KB | OK (n = 3, answer = NO) |
14 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
15 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 100, answer = NO) |
19 | Correct | 0 ms | 256 KB | OK (n = 100, answer = YES) |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
2 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 12, answer = YES) |
6 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
7 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
8 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
9 | Correct | 0 ms | 256 KB | OK (n = 6, answer = YES) |
10 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
11 | Correct | 0 ms | 256 KB | OK (n = 100, answer = NO) |
12 | Incorrect | 0 ms | 256 KB | Contestant can not find answer, jury can |
13 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 3, answer = YES) |
7 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 384 KB | OK (n = 3, answer = YES) |
11 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
12 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
13 | Correct | 0 ms | 256 KB | OK (n = 3, answer = NO) |
14 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
15 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 100, answer = NO) |
19 | Correct | 0 ms | 256 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
21 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 12, answer = YES) |
25 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
26 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
27 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
28 | Correct | 0 ms | 256 KB | OK (n = 6, answer = YES) |
29 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
30 | Correct | 0 ms | 256 KB | OK (n = 100, answer = NO) |
31 | Incorrect | 0 ms | 256 KB | Contestant can not find answer, jury can |
32 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 3, answer = YES) |
7 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 384 KB | OK (n = 3, answer = YES) |
11 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
12 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
13 | Correct | 0 ms | 256 KB | OK (n = 3, answer = NO) |
14 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
15 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 100, answer = NO) |
19 | Correct | 0 ms | 256 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
21 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 12, answer = YES) |
25 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
26 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
27 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
28 | Correct | 0 ms | 256 KB | OK (n = 6, answer = YES) |
29 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
30 | Correct | 0 ms | 256 KB | OK (n = 100, answer = NO) |
31 | Incorrect | 0 ms | 256 KB | Contestant can not find answer, jury can |
32 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 3, answer = YES) |
7 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 384 KB | OK (n = 3, answer = YES) |
11 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
12 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
13 | Correct | 0 ms | 256 KB | OK (n = 3, answer = NO) |
14 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
15 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 100, answer = NO) |
19 | Correct | 0 ms | 256 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
21 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 12, answer = YES) |
25 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
26 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
27 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
28 | Correct | 0 ms | 256 KB | OK (n = 6, answer = YES) |
29 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
30 | Correct | 0 ms | 256 KB | OK (n = 100, answer = NO) |
31 | Incorrect | 0 ms | 256 KB | Contestant can not find answer, jury can |
32 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 3, answer = YES) |
7 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
8 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
9 | Correct | 1 ms | 256 KB | OK (n = 3, answer = YES) |
10 | Correct | 1 ms | 384 KB | OK (n = 3, answer = YES) |
11 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
12 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
13 | Correct | 0 ms | 256 KB | OK (n = 3, answer = NO) |
14 | Correct | 0 ms | 256 KB | OK (n = 3, answer = YES) |
15 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 100, answer = NO) |
19 | Correct | 0 ms | 256 KB | OK (n = 100, answer = YES) |
20 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
21 | Correct | 0 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 | 0 ms | 256 KB | OK (n = 12, answer = YES) |
25 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
26 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
27 | Correct | 1 ms | 256 KB | OK (n = 12, answer = YES) |
28 | Correct | 0 ms | 256 KB | OK (n = 6, answer = YES) |
29 | Correct | 0 ms | 256 KB | OK (n = 12, answer = YES) |
30 | Correct | 0 ms | 256 KB | OK (n = 100, answer = NO) |
31 | Incorrect | 0 ms | 256 KB | Contestant can not find answer, jury can |
32 | Halted | 0 ms | 0 KB | - |