我的模板
#include <bits/stdc++.h>
using namespace std;
const int maxn=3e5+10;
int n,a[maxn];
int run(int n)
{
int i=0,j=1,k=0;
while( i<n&&j<n )
{
k=0;
while( a[(i+k)%n]==a[(j+k)%n] && k<n ) k++;
if( k==n ) return min(i,j);
if( a[(i+k)%n]>a[(j+k)%n] ) i=i+k+1;
else j=j+k+1;
if( i==j ) j++;
}
return min(i,j);
}
int main()
{
cin >> n;
for(int i=0;i<n;i++) cin >> a[i];
int l= run(n);
for(int i=0;i<n;i++)
{
int num=(i+l)%n;
cout<<a[num]<<" ";
}
}