#include<bits/stdc++.h>
#include <iostream>
using namespace std;
std::vector<int> use_machine(std::vector<int> A);
std::vector<int> find_permutation(int N){
if(N%2!=0){
int j=0;
vector<int> A;
for(int i=0;i<N;i++){
j=j^i;
A.push_back(i);
}
vector<int> Sol = use_machine(A);
for(int i=0;i<Sol.size();i++){
j=j^Sol[i];
}
for(int i=0;i<Sol.size();i++){
Sol[i]=Sol[i]^j;
}
return Sol;
}
vector<int> PosAppearo(10);
for(int i=1;i<=N;i++){
int t=i;
int j=0;
while(t>0){
if(t%2==1){
PosAppearo[j]+=1;
}
j++;
t/=2;
}
}
int mult=1;
int num=0;
for(int i=0;i<10;i++){
if(PosAppearo[i]==N/2){
num+=mult;
}
mult*=2;
}
vector<int> Send;
for(int i=0;i<=N;i++){
if(i!=num){
Send.push_back(i);
}
}
vector<int> Sol=use_machine(Send);
PosAppearo=vector<int>(10);
for(int i=0;i<N;i++){
int t=Sol[i];
int j=0;
while(t>0){
if(t%2==1){
PosAppearo[j]+=1;
}
j++;
t/=2;
}
}
mult=1;
int xored=0;
for(int i=0;i<10;i++){
if(PosAppearo[i]>N/2){
xored+=mult;
}
mult*=2;;
}
for(int i=0;i<Sol.size();i++){
int t=Sol[i] ^xored;
if(t>num){
t--;
}
Sol[i]=t;
}
return Sol;
}
# | 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... |