#include "minerals.h"
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 998244353
#define POT 4194304
#define INF 1000000019
#define INFL 1000000000000000099LL
vector<ll>ind,szuk;
void Solve(int n){
ll pop=0;
for(ll i=1;i<=2*n;i++){
if(Query(i)>pop){
pop++;
ind.pb(i);
// cout<<i<<"1 ";
}
else{
szuk.pb(i);
// cout<<i<<"2 ";
}
}
//for(ll i=1;i<=2*n;i++)
// Query(i);
ll gdzie[4*n+7];
for(ll i=0;i<2*n+7;i++)gdzie[i]=0;
for(ll i=0;i<log2(n);i++){
for(ll j=0;j<n;j++){
if((bool)(j&(1<<i)) ^ (bool)(j&(1<<(i-1))) ^ (i==0)){
// cout<<j<<" "<<i<<" 1 ";
pop=Query(ind[j]);
}
}
for(ll j=0;j<n;j++){
// cout<<j<<"2 ";
if((pop==Query(szuk[j]))){
gdzie[j]+=(1<<i);
}
else{
pop--;
if(i&1)
pop+=2;
}
}
// cout<<"\n\n";
//cout<<i<<flush;
/* for(ll j=0;j<n;j++){
if(j&(1<<i)){
pop=Query(ind[j]);
}
}
for(ll j=0;j<n;j++){
pop=Query(szuk[j]);
}*/
}
for(ll i=0;i<n;i++){
Answer(szuk[i],ind[gdzie[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... |