#include "minerals.h"
// Knapsack DP is harder than FFT.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii; typedef pair<ll,ll> pll;
#define ff first
#define ss second
#define pb emplace_back
#define FOR(i,n) for(int i = 0; i < (n); ++i)
#define FOO(i,a,b) for(int i = (a); i <= (b); ++i)
#define AI(x) begin(x),end(x)
template<class I> bool chmax(I &a, I b){ return a < b ? (a = b, true) : false;}
template<class I> bool chmin(I &a, I b){ return a > b ? (a = b, true) : false;}
#ifdef OWO
#define debug(args...) LKJ("[ " + string(#args) + " ]", args)
void LKJ(){ cerr<<endl;}
template<class I, class...T> void LKJ(I&&x, T&&...t){ cerr<<x<<", ", LKJ(t...);}
template<class I> void DE(I a, I b){ while(a < b) cerr<<*a<<" \n"[next(a) == b], ++a;}
#else
#define debug(...) 0
#define DE(...) 0
#endif
void solve(vector<int> &a, vector<int> &b, bool in){
assert(a.size() == b.size());
debug("solving:");
DE(AI(a)); DE(AI(b));
if(a.size() < 1 or b.size() < 1){
return;
}
if(a.size() == 1 and b.size() == 1){
Answer(a[0], b[0]);
return;
}
vector<int> la, lb, ra, rb;
int h = 1<<(__lg(a.size()) - 1);
for(int i = 0; i < h; ++i) la.pb(a[i]);
for(int i = h; i < a.size(); ++i) lb.pb(a[i]);
int ls, cs;
for(int i: la) cs = Query(i);
for(int i: b){
ls = cs;
cs = Query(i);
if(cs == ls ^ in) ra.pb(i);
else rb.pb(i);
}
// for(int i: rb)
// cs = Query(i);
DE(AI(la)); DE(AI(lb));
DE(AI(ra)); DE(AI(rb));
solve(la, ra, !in);
solve(lb, rb, in);
}
void Solve(int N) {
vector<int> a, b;
int ls = 0, cs;
for(int i = 1; i <= N * 2; ++i){
cs = Query(i);
if(cs == ls) b.pb(i);
else a.pb(i);
ls = cs;
}
solve(a, b, true);
}
Compilation message
minerals.cpp: In function 'void solve(std::vector<int>&, std::vector<int>&, bool)':
minerals.cpp:22:20: warning: statement has no effect [-Wunused-value]
22 | #define debug(...) 0
| ^
minerals.cpp:28:2: note: in expansion of macro 'debug'
28 | debug("solving:");
| ^~~~~
minerals.cpp:23:17: warning: statement has no effect [-Wunused-value]
23 | #define DE(...) 0
| ^
minerals.cpp:29:2: note: in expansion of macro 'DE'
29 | DE(AI(a)); DE(AI(b));
| ^~
minerals.cpp:23:17: warning: statement has no effect [-Wunused-value]
23 | #define DE(...) 0
| ^
minerals.cpp:29:13: note: in expansion of macro 'DE'
29 | DE(AI(a)); DE(AI(b));
| ^~
minerals.cpp:41:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
41 | for(int i = h; i < a.size(); ++i) lb.pb(a[i]);
| ~~^~~~~~~~~~
minerals.cpp:49:9: warning: suggest parentheses around comparison in operand of '^' [-Wparentheses]
49 | if(cs == ls ^ in) ra.pb(i);
| ~~~^~~~~
minerals.cpp:23:17: warning: statement has no effect [-Wunused-value]
23 | #define DE(...) 0
| ^
minerals.cpp:55:2: note: in expansion of macro 'DE'
55 | DE(AI(la)); DE(AI(lb));
| ^~
minerals.cpp:23:17: warning: statement has no effect [-Wunused-value]
23 | #define DE(...) 0
| ^
minerals.cpp:55:14: note: in expansion of macro 'DE'
55 | DE(AI(la)); DE(AI(lb));
| ^~
minerals.cpp:23:17: warning: statement has no effect [-Wunused-value]
23 | #define DE(...) 0
| ^
minerals.cpp:56:2: note: in expansion of macro 'DE'
56 | DE(AI(ra)); DE(AI(rb));
| ^~
minerals.cpp:23:17: warning: statement has no effect [-Wunused-value]
23 | #define DE(...) 0
| ^
minerals.cpp:56:14: note: in expansion of macro 'DE'
56 | DE(AI(ra)); DE(AI(rb));
| ^~
minerals.cpp:49:9: warning: 'cs' may be used uninitialized in this function [-Wmaybe-uninitialized]
49 | if(cs == ls ^ in) ra.pb(i);
| ~~~^~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
2 ms |
492 KB |
Output is correct |
3 |
Correct |
4 ms |
620 KB |
Output is correct |
4 |
Correct |
7 ms |
876 KB |
Output is correct |
5 |
Correct |
14 ms |
1260 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
492 KB |
Output is correct |
7 |
Correct |
4 ms |
620 KB |
Output is correct |
8 |
Correct |
7 ms |
876 KB |
Output is correct |
9 |
Correct |
14 ms |
1260 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
12 ms |
1004 KB |
Output is correct |
12 |
Correct |
14 ms |
1388 KB |
Output is correct |
13 |
Correct |
17 ms |
1388 KB |
Output is correct |
14 |
Correct |
12 ms |
1260 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
492 KB |
Output is correct |
7 |
Correct |
4 ms |
620 KB |
Output is correct |
8 |
Correct |
7 ms |
876 KB |
Output is correct |
9 |
Correct |
14 ms |
1260 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
12 ms |
1004 KB |
Output is correct |
12 |
Correct |
14 ms |
1388 KB |
Output is correct |
13 |
Correct |
17 ms |
1388 KB |
Output is correct |
14 |
Correct |
12 ms |
1260 KB |
Output is correct |
15 |
Correct |
41 ms |
2668 KB |
Output is correct |
16 |
Correct |
40 ms |
2596 KB |
Output is correct |
17 |
Correct |
36 ms |
2664 KB |
Output is correct |
18 |
Correct |
30 ms |
2668 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
492 KB |
Output is correct |
7 |
Correct |
4 ms |
620 KB |
Output is correct |
8 |
Correct |
7 ms |
876 KB |
Output is correct |
9 |
Correct |
14 ms |
1260 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
12 ms |
1004 KB |
Output is correct |
12 |
Correct |
14 ms |
1388 KB |
Output is correct |
13 |
Correct |
17 ms |
1388 KB |
Output is correct |
14 |
Correct |
12 ms |
1260 KB |
Output is correct |
15 |
Correct |
41 ms |
2668 KB |
Output is correct |
16 |
Correct |
40 ms |
2596 KB |
Output is correct |
17 |
Correct |
36 ms |
2664 KB |
Output is correct |
18 |
Correct |
30 ms |
2668 KB |
Output is correct |
19 |
Correct |
40 ms |
2668 KB |
Output is correct |
20 |
Correct |
40 ms |
2668 KB |
Output is correct |
21 |
Correct |
38 ms |
2768 KB |
Output is correct |
22 |
Correct |
32 ms |
2540 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
492 KB |
Output is correct |
7 |
Correct |
4 ms |
620 KB |
Output is correct |
8 |
Correct |
7 ms |
876 KB |
Output is correct |
9 |
Correct |
14 ms |
1260 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
12 ms |
1004 KB |
Output is correct |
12 |
Correct |
14 ms |
1388 KB |
Output is correct |
13 |
Correct |
17 ms |
1388 KB |
Output is correct |
14 |
Correct |
12 ms |
1260 KB |
Output is correct |
15 |
Correct |
41 ms |
2668 KB |
Output is correct |
16 |
Correct |
40 ms |
2596 KB |
Output is correct |
17 |
Correct |
36 ms |
2664 KB |
Output is correct |
18 |
Correct |
30 ms |
2668 KB |
Output is correct |
19 |
Correct |
40 ms |
2668 KB |
Output is correct |
20 |
Correct |
40 ms |
2668 KB |
Output is correct |
21 |
Correct |
38 ms |
2768 KB |
Output is correct |
22 |
Correct |
32 ms |
2540 KB |
Output is correct |
23 |
Correct |
41 ms |
2796 KB |
Output is correct |
24 |
Correct |
40 ms |
2796 KB |
Output is correct |
25 |
Correct |
33 ms |
2792 KB |
Output is correct |
26 |
Correct |
38 ms |
2816 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
492 KB |
Output is correct |
7 |
Correct |
4 ms |
620 KB |
Output is correct |
8 |
Correct |
7 ms |
876 KB |
Output is correct |
9 |
Correct |
14 ms |
1260 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
12 ms |
1004 KB |
Output is correct |
12 |
Correct |
14 ms |
1388 KB |
Output is correct |
13 |
Correct |
17 ms |
1388 KB |
Output is correct |
14 |
Correct |
12 ms |
1260 KB |
Output is correct |
15 |
Correct |
41 ms |
2668 KB |
Output is correct |
16 |
Correct |
40 ms |
2596 KB |
Output is correct |
17 |
Correct |
36 ms |
2664 KB |
Output is correct |
18 |
Correct |
30 ms |
2668 KB |
Output is correct |
19 |
Correct |
40 ms |
2668 KB |
Output is correct |
20 |
Correct |
40 ms |
2668 KB |
Output is correct |
21 |
Correct |
38 ms |
2768 KB |
Output is correct |
22 |
Correct |
32 ms |
2540 KB |
Output is correct |
23 |
Correct |
41 ms |
2796 KB |
Output is correct |
24 |
Correct |
40 ms |
2796 KB |
Output is correct |
25 |
Correct |
33 ms |
2792 KB |
Output is correct |
26 |
Correct |
38 ms |
2816 KB |
Output is correct |
27 |
Incorrect |
46 ms |
2796 KB |
Wrong Answer [2] |
28 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
492 KB |
Output is correct |
7 |
Correct |
4 ms |
620 KB |
Output is correct |
8 |
Correct |
7 ms |
876 KB |
Output is correct |
9 |
Correct |
14 ms |
1260 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
12 ms |
1004 KB |
Output is correct |
12 |
Correct |
14 ms |
1388 KB |
Output is correct |
13 |
Correct |
17 ms |
1388 KB |
Output is correct |
14 |
Correct |
12 ms |
1260 KB |
Output is correct |
15 |
Correct |
41 ms |
2668 KB |
Output is correct |
16 |
Correct |
40 ms |
2596 KB |
Output is correct |
17 |
Correct |
36 ms |
2664 KB |
Output is correct |
18 |
Correct |
30 ms |
2668 KB |
Output is correct |
19 |
Correct |
40 ms |
2668 KB |
Output is correct |
20 |
Correct |
40 ms |
2668 KB |
Output is correct |
21 |
Correct |
38 ms |
2768 KB |
Output is correct |
22 |
Correct |
32 ms |
2540 KB |
Output is correct |
23 |
Correct |
41 ms |
2796 KB |
Output is correct |
24 |
Correct |
40 ms |
2796 KB |
Output is correct |
25 |
Correct |
33 ms |
2792 KB |
Output is correct |
26 |
Correct |
38 ms |
2816 KB |
Output is correct |
27 |
Incorrect |
46 ms |
2796 KB |
Wrong Answer [2] |
28 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
364 KB |
Output is correct |
2 |
Correct |
0 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
492 KB |
Output is correct |
7 |
Correct |
4 ms |
620 KB |
Output is correct |
8 |
Correct |
7 ms |
876 KB |
Output is correct |
9 |
Correct |
14 ms |
1260 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
12 ms |
1004 KB |
Output is correct |
12 |
Correct |
14 ms |
1388 KB |
Output is correct |
13 |
Correct |
17 ms |
1388 KB |
Output is correct |
14 |
Correct |
12 ms |
1260 KB |
Output is correct |
15 |
Correct |
41 ms |
2668 KB |
Output is correct |
16 |
Correct |
40 ms |
2596 KB |
Output is correct |
17 |
Correct |
36 ms |
2664 KB |
Output is correct |
18 |
Correct |
30 ms |
2668 KB |
Output is correct |
19 |
Correct |
40 ms |
2668 KB |
Output is correct |
20 |
Correct |
40 ms |
2668 KB |
Output is correct |
21 |
Correct |
38 ms |
2768 KB |
Output is correct |
22 |
Correct |
32 ms |
2540 KB |
Output is correct |
23 |
Correct |
41 ms |
2796 KB |
Output is correct |
24 |
Correct |
40 ms |
2796 KB |
Output is correct |
25 |
Correct |
33 ms |
2792 KB |
Output is correct |
26 |
Correct |
38 ms |
2816 KB |
Output is correct |
27 |
Incorrect |
46 ms |
2796 KB |
Wrong Answer [2] |
28 |
Halted |
0 ms |
0 KB |
- |