Description

话说练习后缀数组时,小C 刷遍 poj 后缀数组题。

各类字符串题闻之丧胆。就在准备对敌方武将发出连环杀时,对方一记无中生有,又一招顺

手牵羊。小C 程序中的原字符数组就被牵走了。幸运的是。小C 早已经求出了 SA[],为了

能东山再起,迅速 A 掉此题,他希望各位忠臣们能帮忙求出一组原字符数组的可行方案。



知原字符数组由小写拉丁字母组成。

且小C的SA[]也是有可能求错的。 原数组可能不存在。

Input

输入文件仅仅有一行且为用空格隔开的一个正整数 N。

接下来一行有 N 个数,为 1~N 的排列。

当中对于 100%的数据 N≤500000

Output

一行有 N 个小写拉丁字母。若不存在合法方案输出-1;

Sample Input

4

2 3 4 1

Sample Output

dabc

HINT

Source

鸣谢Claris提供SPJ

由于有SPJ所以不虚

尽量让构造出的那个字符串的字典序小的话,就能够随便构造了

然后假设最大的字符超过了小写字母肯定就是不合法了

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 500010
#define GET (ch>='0'&&ch<='9')
using namespace std;
int n;
int sa[MAXN],rank[MAXN];
char last='a',ch[MAXN];
void in(int &x)
{
char ch=getchar();x=0;
while (!GET) ch=getchar();
while (GET) x=x*10+ch-'0',ch=getchar();
}
int main()
{
in(n);
for (int i=1;i<=n;i++) in(sa[i]),rank[sa[i]]=i;
ch[sa[1]]=last;
for (int i=2;i<=n;i++)
{
if (rank[sa[i-1]+1]>rank[sa[i]+1]) last++;
if (last>'z') {puts("-1");return 0;}
ch[sa[i]]=last;
}
for (int i=1;i<=n;i++) putchar(ch[i]);
}

【CERC2008】【BZOJ4319】Suffix reconstruction的更多相关文章

  1. 【java 上传+下载】

    一.先说说上传 第一步:pom.xml文件 加上 上传文件依赖架包 <dependency> <groupId>commons-fileupload</groupId&g ...

  2. 【Spring源码分析】配置文件读取流程

    前言 Spring配置文件读取流程本来是和http://www.cnblogs.com/xrq730/p/6285358.html一文放在一起的,这两天在看Spring自定义标签的时候,感觉对Spri ...

  3. 【spring源码分析】IOC容器初始化(三)

    前言:在[spring源码分析]IOC容器初始化(二)中已经得到了XML配置文件的Document实例,下面分析bean的注册过程. XmlBeanDefinitionReader#registerB ...

  4. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  5. 47. Spring Boot发送邮件【从零开始学Spring Boot】

    (提供源代码) Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看如何在Spring Bo ...

  6. (19)Spring Boot 添加JSP支持【从零开始学Spring Boot】

    [来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论: 您的认可是我最大的动力,感谢您的支持] 看完本文章您可能会有些疑问,可以查看之后的一篇博客: 81. Spring Boot集成JSP疑问[从 ...

  7. (18)使用模板(thymeleaf-freemarker)【从零开始学Spring Boot】

    整体步骤: (1)            在pom.xml中引入thymeleaf; (2)            如何关闭thymeleaf缓存 (3)            编写模板文件.html ...

  8. 14 微服务电商【黑马乐优商城】:day01-springboot(理论篇)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) :day01-springboot(Thyme ...

  9. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  10. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

随机推荐

  1. C#通过post发送接收数据流

    发送数据流方法 /// <summary> /// /// </summary> /// <param name="url">目标url< ...

  2. 谈谈如何来查看GC日志

    一.首先来看一下JVM中的GC有哪几种类型? 1.-XX:UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后,使用Serial+Serial Old收集器组合进行垃圾收集. ...

  3. notepad++新建文档时,会出现语法错误的红色下波浪线

    notepad++新建文档时,会出现语法错误的红色下波浪线: 原因:新建文档时默认设置语言为PHP. 解决方法:修改默认语言为java或JavaScript,如下: 小结:打开文档时,也可能出现下波浪 ...

  4. 在 VS2015+EF6.0中使用Mysql 遇到的坑

    1)首先是要在vs2015中安装mysql Database 默认是不存在的 1)下载mysql-connector-net-6.9.9.msi    地址:https://dev.mysql.com ...

  5. Linux从入门到适应(二):更换清华源

    1 进入到/etc/apt文件夹当中,找到sources.list,将其备份.命令:cp -p sources.list sources.list.old 2 采用管理员方式打开sources.lis ...

  6. 06网络通信udp-tcp、正则

    一. udp网络程序 1.    udp网络程序-发送数据 1)创建客户端套接字 2)发送/接收数据 3)关闭套接字 from socket import * # 1. 创建udp套接字 udp_so ...

  7. Linux高阶命令进阶

    1. 输出重定向 > (1>):覆盖输出,会覆盖掉原先的文件内容 >> (1>>) :追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加 2> :错误输 ...

  8. php7 安装swoole扩展

    昨天无意中看到一篇关于直播的视频教程 里面讲到了swoole,对于这个东西我相信大家(接近1年phper)都是听过它,但没有真正去用它,当然也是不知道如何使用(me too). 此处总结一下(借鉴了几 ...

  9. Java 集合相关

    对整个体系做一个记录,并不涉及详细应用 Object类 1. 重写toString方法 System.out.println可以打印任何对象在于Object类拥有一个方法 public String ...

  10. [WPF自定义控件库]为Form和自定义Window添加FunctionBar

    1. 前言 我常常看到同一个应用程序中的表单的按钮----也就是"确定"."取消"那两个按钮----实现得千奇百怪,其实只要使用统一的Style起码就可以统一按 ...