#include "art.h"
#include <bits/stdc++.h>
using namespace std;
vector<int>a;
map<vector<int>,int>mem;
void mv(int&i,int j){
rotate(a.begin()+min(i,j),a.begin()+i+(i<j),a.begin()+max(i,j)+1);
i=j;
}
int p(){
if(!mem.count(a)){
mem[a]=publish(a);
}
return mem[a];
}
int f(int l,int r){
int x=r;
while(l<r){
int mid=(l+r)/2;
mv(x,mid);
int c1=p();
mv(x,mid+1);
int c2=p();
if(c1<c2){
r=mid;
}else{
l=mid+1;
}
}
mv(x,l);
return x;
}
void ms(int l=0,int r=a.size()-1){
if(l==r){
return;
}
if(r-l==1){
int c1=p();
swap(a[l],a[r]);
int c2=p();
if(c1<c2){
swap(a[l],a[r]);
}
return;
}
int mid=(l+r)/2;
ms(l,mid);
ms(mid+1,r);
int c=publish(a);
for(int i=mid+1;i<=r;i++){
l=f(l,i)+1;
}
}
void solve(int N) {
a=vector<int>(N);
iota(a.begin(),a.end(),1);
ms();
answer(a);
}
# | 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... |