1 /* 2 题意:给出m个位置,每次把[p,len-p+1]内的字符子串反转,输出最后的结果 3 字符串处理:朴素的方法超时,想到结果要么是反转要么没有反转,所以记录 4 每个转换的次数,把每次要反转的反转就不超时了:) 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cstring> 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 String 17 { 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 abcdef 44 1 45 2 46 vwxyz 47 2 48 2 2 49 abcdef 50 3 51 1 2 3 52 */