This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "minerals.h"
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
#define REP(i,j,k) for(int i=(j);i<(k);++i)
#define pb push_back
// #define __debug
#ifdef __debug
#define pr(...) cerr<<__VA_ARGS__
#define ar(a,s,t) {rep(zy,s,t)pr(a[zy]<<' ');pr(endl);}
#else
#define pr(...) (void)0
#define ar(...) (void)0
#endif
//
int ls=0,ll=0;
vector<int>v[2];
int qr(int x){
int t=Query(x+1);
swap(t,ls);
return ls==t;
}
void sol(int l,int r,vector<int>&vec){
if(l+1==r)Answer(v[0][l]+1,vec[0]+1);
else{
int mid=(2*l+r+1)/3;
vector<int>vv[2];
if(l>ll)REP(i,l,mid)qr(v[0][i]);
else REP(i,mid,r)qr(v[0][i]);
ll=l;
REP(i,0,vec.size()){
int t=vec[i];
vv[qr(t)].pb(t);
}
sol(l,mid,vv[1]);
sol(mid,r,vv[0]);
}
vector<int>().swap(vec);
}
void Solve(int n){
REP(i,0,2*n)v[qr(i)].pb(i);
sol(0,n,v[1]);
}
Compilation message (stderr)
minerals.cpp: In function 'void sol(int, int, std::vector<int>&)':
minerals.cpp:5:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
#define REP(i,j,k) for(int i=(j);i<(k);++i)
^
minerals.cpp:33:3: note: in expansion of macro 'REP'
REP(i,0,vec.size()){
^~~
# | 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... |