1 /* 2 题意:给出m个位置,每次把[p,len-p+1]内的字符子串反转,输出最后的结果 3 字符串处理:朴素的方法超时,想到结果要么是反转要么没有反转,所以记录 4 每个转换的次数,把每次要反转的反转就不超时了:) 5 */ 6 #include7 #include 8 #include 9 using namespace std;10 11 const int MAXN = 2e5 + 10;12 const int INF = 0x3f3f3f3f;13 char s[MAXN];14 int to[MAXN];15 16 int main(void) //Codeforces Round #297 (Div. 2) B. Pasha and String17 {18 int m;19 scanf ("%s", s + 1);20 int len = strlen (s + 1);21 scanf ("%d", &m);22 while (m--)23 {24 int p; scanf ("%d", &p);25 int q = len - p + 1;26 to[p]++;27 }28 29 int sum = 0;30 for (int i=1; i<=len/2; ++i)31 {32 sum += to[i];33 if (sum & 1) swap (s[i], s[len-i+1]);34 }35 printf ("%s", s + 1);36 37 return 0;38 }39 40 41 42 /*43 abcdef44 145 246 vwxyz47 248 2 249 abcdef50 351 1 2 352 */