题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2970
源代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int r[600005],n;
int p[600005];
char s[600005];
int main()
{
int T;
scanf("%d",&T);
while(scanf("%d",&n)==1)
{
for(int i=0;i<n;i++)
{
scanf("%d",r+i);
r[i]--;
p[r[i]]=i;
}
p[n]=-1;
int k=0;
s[r[0]]=k+'a';
for(int i=1;i<n;i++)
{
int a=r[i-1],b=r[i];
if(p[a+1]>p[b+1])k++;
s[r[i]]=k+'a';
}
if(k>=26)
puts("-1");
else
{
for(int i=0;i<n;i++)
printf("%c",s[i]);
puts("");
}
}
return 0;
}