| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1353637 | WH8 | Minerals (JOI19_minerals) | C++17 | 11 ms | 2472 KiB |
#include "minerals.h"
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
vector<int> in, a, b;
int ans=0;
int Flip(int x){
in[x]=!in[x];
return Query(x);
}
int Set(int x, int v){
if(in[x] == v) {
return ans;
}
else {
return Flip(x);
}
}
void Solve(int N) {
int n = N;
in.resize(2*N+4, 0);
for(int i=1;i<=2*n;i++){
int nv=Set(i, 1);
if(nv == ans + 1){
a.pb(i);
}
else {
b.pb(i);
}
ans = nv;
}
/*for(int i=0;i<n;i++){
cout<<a[i]<<endl;
}*/
vector<int> to(n+1, 0);
for(int bit=0;bit<16;bit++){
for(int i=0;i<n;i++){
if(((1<<bit) & i)==0){ // turn on the left half.
ans=Set(a[i], 1);
}
else {
ans=Set(a[i], 0);
}
}
for(int i=0;i<n;i++){
int nv=Flip(b[i]);
if(abs(ans-nv) == 1){ // its in the right half.
to[i] += (1<<bit);
}
ans=nv;
}
}
for(int i=0;i<n;i++){
Answer(b[i], a[to[i]]);
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
