这其实是一道假的后缀数组233
考查的其实是对后缀数组的理解quq
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define maxn 500005
using namespace std;
inline int rd(){
int x=0,f=1;char c=getchar();
while(c<'0' || c>'9') f=c=='-'?-1:1,c=getchar();
while(c<='9' && c>='0') x=x*10+c-'0',c=getchar();
return x*f;
}
int n,sa[maxn],rk[maxn];
char s[maxn];
int main(){
n=rd();
for(int i=1;i<=n;i++) sa[i]=rd(),rk[sa[i]]=i;
char now='a'; s[sa[1]]=now;
for(int i=2;i<=n;i++){
if(rk[sa[i-1]+1]>rk[sa[i]+1]) ++now;
if(now>'z') return puts("-1"),0;
s[sa[i]]=now;
}
for(int i=1;i<=n;i++) printf("%c",s[i]);
return 0;
}