#include "machine.h"
#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define pll pair<ll, ll>
#define vll vector<ll>
#define pb push_back
typedef int ll;
namespace{
const ll mxM=256;
}
vector<int> find_permutation(int n) {
if(n%2==1){
vll a(n);
ll orgsum=0;
for(ll i=0;i<n;i++){
a[i]=i;
orgsum^=a[i];
}
vll re=use_machine(a);
ll sum=0;
for(ll i=0;i<n;i++){
sum^=re[i];
}
sum^=orgsum;
vll b(n);
for(ll i=0;i<n;i++){
b[i]=re[i]^sum;
}
return b;
}
else{
ll cnt1=n/2+1;
ll cnt2=n/2-1;
vll a(n);
ll pt=0;
vll id(mxM, -1);
for(ll i=0;i<cnt1*2;i+=2){
a[pt]=i;
id[i]=pt;
pt++;
}
for(ll i=1;i<cnt2*2;i+=2){
a[pt]=i;
id[i]=pt;
pt++;
}
// for(ll i=0;i<n;i++){
// cout<<a[i]<<' ';
// }
// cout<<'\n';
vll re=use_machine(a);
ll xx=-1;
ll cnt=0;
for(ll x=0;x<mxM;x++){
bool good=1;
for(ll i=0;i<n;i++){
if(id[re[i]^x]==-1){
good=0;
break;
}
}
if(good){
xx=x;
cnt++;
// cout<<"x: "<<x<<'\n';
}
}
assert(cnt==1);
vll b(n);
for(ll i=0;i<n;i++){
b[i]=id[re[i]^xx];
}
return b;
}
}
# | 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... |