C. String Reconstruction
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Ivan had string s consisting of small English letters. However, his friend Julia decided to make fun of him and hid the string s.
Ivan preferred making a new string to finding the old one.

Ivan knows some information about the string s. Namely, he remembers, that string ti occurs
in string s at least ki times
or more, he also remembers exactly ki positions
where the string ti occurs
in string s: these positions are xi, 1, xi, 2, ..., xi, ki.
He remembers n such strings ti.

You are to reconstruct lexicographically minimal string s such that
it fits all the information Ivan remembers. Strings ti and
string s consist of small English letters only.

Input

The first line contains single integer n (1 ≤ n ≤ 105)
— the number of strings Ivan remembers.

The next n lines contain information about the strings. The i-th
of these lines contains non-empty string ti,
then positive integer ki,
which equal to the number of times the string ti occurs
in string s, and then ki distinct
positive integers xi, 1, xi, 2, ..., xi, ki in
increasing order — positions, in which occurrences of the string ti in
the string s start. It is guaranteed that the sum of lengths of strings ti doesn't
exceed 106, 1 ≤ xi, j ≤ 106, 1 ≤ ki ≤ 106,
and the sum of all ki doesn't
exceed 106.
The strings ti can
coincide.

It is guaranteed that the input data is not self-contradictory, and thus at least one answer always exists.

Output

Print lexicographically minimal string that fits all the information Ivan remembers.

Examples
input
3
a 4 1 3 5 7
ab 2 1 5
ca 1 4
output
abacaba
input
1
a 1 3
output
aaa

官方题解:

一开始sort排序,然后依次按顺序放入字符串

直接看代码(注意,输入需改为scanf格式,否则会超时)

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
const int maxn=1e6+100; string s[maxn];
vector<pair<int ,int> >tmp; int main()
{
int n,k,x;
scanf("%d",&n);
for(int i=0;i<n;i++){
cin>>s[i]>>k;
for(int j=0;j<k;j++)
{
scanf("%d",&x);
tmp.push_back(make_pair(x,i));
}
}
sort(tmp.begin(),tmp.end());
string ans;
int len=1;
for(int i=0;i<tmp.size();i++)
{
int t1=tmp[i].first,t2=tmp[i].second;
while(t1>len)
{
ans+='a';
len++;
}//len-t1可以避免重复添加
for(int j=len-t1;j<s[t2].length();j++)
{
ans+=s[t2][j];
len++;
}
}
cout<<ans<<endl;
return 0;
}





最新文章

  1. [WPF]控件应用多个样式
  2. jmf找不到摄像头设备解决办法
  3. Facial Detection and Recognition with opencv on ios
  4. 显示和隐藏Mac下的 隐藏文件
  5. linux安装桌面环境(GNOME)VNC连接Linux
  6. Servlet3.0-使用注解定义Servlet
  7. 使用redis做pv、uv、click统计
  8. java jvm学习笔记七(jar包的代码认证和签名)
  9. 8.WCF简化的 AJAX(*)
  10. 最强烈推荐-我的java收藏夹(内有国内最好的java论坛)
  11. JAVA之等号、传类对象参数与c++的区别
  12. springboot(十五):springboot+jpa+thymeleaf增删改查示例
  13. openwrt pptpd客户端
  14. vxWorks应用程序加载的另一种办法
  15. KVM之一:安装准备(基于CentOS6.7)
  16. 执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)
  17. 最新QT4.8+kernel_3.2.5+uboot_2010.06+tslib移植成功-问题小结
  18. BP算法基本原理推导----《机器学习》笔记
  19. redis 集群搭建
  20. [UE4]Overlay容器:图片随着其他容器(比如Vertical Box)大小而同步改变

热门文章

  1. 2018/3/3 解析ThreadLocal源码
  2. android view自定义
  3. Uva - 11181 Probability|Given (条件概率)
  4. docker容器-快速部署Jenkins
  5. Ubuntu 16.04错误:正在读取软件包列表... 有错误! E: Encountered a section with no Package: header E: Problem with MergeList /var/lib/apt/lists/ppa.launchpad.net_t-tujikawa_ppa_ubuntu_dists_xenial_main_i18n_Translatio
  6. Memcached集群之通过Repcached实现主从复制(待实践)
  7. Nginx+Tomcat+Memcached负载均衡和session共享
  8. spring,spring mvc之所以起作用是因为开启了注解解释器,即spring的annotation on
  9. 电脑无线WIFI怎么共享给手机
  10. 【转】C++ 进程间的通讯(一):简单的有名管道实现