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<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include <vector>
#define ll long long
#define N 202300
#include "doll.h"
using namespace std;
vector<int>ans,P,Q;
int w,n,nn,v[N],a[N];
int dfs(int L,int R,int l,int r)
{
if(L==R){
if(L==1)return 0;
return v[l];
}
int x=P.size(),y,z,mid=L+R>>1;
P.push_back(0);
Q.push_back(0);
if(r<=mid){
y=-1;
z=dfs(L,mid,l,r);
}
else{
y=dfs(mid+1,R,mid+1,r);
z=dfs(L,mid,l,mid);
}
P[x]=y;
Q[x]=z;
return -x-1;
}
bool cmp(int x,int y)
{
while((x&1)==(y&1)){
x>>=1;
y>>=1;
}
return (x&1)>(y&1);
}
void create_circuit(int M, std::vector<int> A)
{
n=A.size();
for(int i=1;i<=n;++i)
a[i]=i;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;++i)
v[a[i]+1]=A[i-1];
nn=1;
while(nn<n+1)nn<<=1;
if(n==1){
ans.push_back(A[0]);
for(int i=1;i<=M;++i)
ans.push_back(0);
}
else{
for(int i=0;i<=M;++i)
ans.push_back(-1);
dfs(1,nn,1,n+1);
}
answer(ans,P,Q);
return;
}
Compilation message (stderr)
doll.cpp: In function 'int dfs(int, int, int, int)':
doll.cpp:18:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
18 | int x=P.size(),y,z,mid=L+R>>1;
| ~^~
# | 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... |