比赛 名字我取了 评测结果 AAAAAAAAAAAAAAA
题目名称 字串重组 最终得分 100
用户昵称 胡嘉兴 运行时间 1.092 s
代码语言 C++ 内存使用 1.46 MiB
提交时间 2017-09-15 21:38:32
显示代码纯文本
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iostream>
#include <cctype>

#define N 1200000 + 7

using namespace std;

char s[N] = {0};

int max(int a, int b)
{
	return a > b ? a : b;
}
int main()
{
	int n, end = 0;
	freopen("R.in", "r", stdin);
	freopen("R.out", "w", stdout);
	
	scanf("%d ", &n);
	
	for(int i = 1; i <= n; i++)
	{
		vector<char> vec(0);
		char x;
		int m, l = 0, maxbegin = -1;
		while((x = getchar()) != ' ')
		{
			if(isalpha(x))
			{
				vec.push_back(x);
				l++;
			}
		}
		
		scanf("%d ", &m);
		
		for(int j = 1; j <= m; j++)
		{
			int begin;
			
			scanf("%d ", &begin);
			
			end = max(end, begin + l - 1);
			
			for(int k = max(begin, maxbegin) - begin; k < l; k++)
			{
				s[begin + k] = vec[k];
			}
			maxbegin = begin + l - 1;
		}
	}
	
	for(int i = 1; i <= end; i++)
	{
		if(s[i] == 0)
		{
			
			printf("a");
			
		}
		else
		{
			
			printf("%c", s[i]);
			
		}
	}
	
	printf("\n");
	
	return 0;
}