题目描述
#include<iostream> #include<cstdio> #define N 630009 using namespace std; typedef long long ll; int n,a[N]; inline ll rd(){ ll x=0;char c=getchar();bool f=0; while(!isdigit(c)){if(c==‘-‘)f=1;c=getchar();} while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();} return f?-x:x; } int main(){ n=rd(); for(int i=1;i<=n;++i)a[i]=rd(); for(int i=1;i<=n;++i)a[i+n]=a[i]; int i=1,j=2,k=0; while(i<=n&&j<=n&&k<=n){ ll delta=a[i+k]-a[j+k]; if(!delta)k++; else{ if(delta>0)i=i+k+1; else j=j+k+1;k=0; if(i==j)j++; } } int now=min(i,j); for(int i=now;i<=now+n-1;++i)printf("%d ",a[i]); return 0; }
原文:https://www.cnblogs.com/ZH-comld/p/10473281.html