jhljx又来了(V)
Problem Description
经过了jhljx上个学期对大家的洗礼,大家对他也不陌生了。于是这个学期他准备卷土重来了。。
-=-
听说大家开始学习数据结构。唔呼呼~~
给你一个字符串,设字符串的长度为k。然后jhljx给出了一些位置a[i],那么你需要将i~k-i+1这一个子串进行反转操作。
然后jhljx希望知道最终的序列是什么,请你快来帮帮他。
Input
输入多组数据。
每组数据第一行为一个字符串,字符串长度为k。(k<=100000)
第二行为一个数n(1<=n<=100000)。
接下来为n个数a[i](1<=n<=k/2)。
Output
输出最终的字符串序列。
Sample Input
abcdef 1 2 vwxyz 2 2 2 abcdef 3 1 2 3
Sample Output
aedcbf vwxyzfbdcea
fsy的思想:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #define clr(a,b) memset(a,b,sizeof(a)) using namespace std; const int maxn = 100010; int a[maxn]; char str[maxn]; int n; int main() { int x; while(~scanf("%s",str+1)) { scanf("%d",&n); clr(a,0); for(int i=1; i<=n; ++i) { scanf("%d",&x); a[x]^=1; } int l=strlen(str+1); int f=0; for(int i=1; i<=l/2; ++i) { f^=a[i]; if(f) swap(str[i],str[l-i+1]); } cout<<str+1<<endl; } return 0; }