50pts:
#include<bits/stdc++.h>
#define maxn 10000010
using namespace std;
int n;
char a[maxn*2];
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;++i)cin>>a[i];
for(int i=n+1;i<=n*2;++i)a[i]=a[i-n];
int i=1,j=2;int k=0;
while(i<=n&&j<=n){
for(k=0;i+k<=n&&j+k<=n&&a[i+k]==a[j+k];)++k;
if(a[i+k]>a[j+k])i=i+k+1;
else j=j+k+1;
if(i==j)i++;
}
int ans=min(i,j);
for(int i=0;i<n;++i)cout<<a[i+ans];
return 0;
}
100pts:
#include<bits/stdc++.h>
#define maxn 10000010
using namespace std;
int n;char a[maxn*2];
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;++i)cin>>a[i];
for(int i=n+1;i<=n+n;++i)a[i]=a[i-n];
int i=1,j=2,k=0;
while(i<=n&&j<=n){
for(k=0;k<n&&a[i+k]==a[j+k];)++k;
if(a[i+k]>a[j+k])i=i+k+1;
else j=j+k+1;
if(i==j)i++;
}
int ans=min(i,j);
for(int i=0;i<n;++i)cout<<a[i+ans];
return 0;
}