codeforces-525B Pasha and String


codeforces-525B Pasha and String


                        time limit per test2 seconds    memory limit per test256 megabytes

Pasha got a very beautiful string s for his birthday, the string consists of lowercase Latin letters. The letters in the string are numbered from 1 to |s| from left to right, where |s| is the length of the given string.

Pasha didn’t like his present very much so he decided to change it. After his birthday Pasha spent m days performing the following transformations on his string — each day he chose integer ai and reversed a piece of string (a segment) from position ai to position |s| - ai + 1. It is guaranteed that 2·ai ≤ |s|.

You face the following task: determine what Pasha’s string will look like after m days.

Input
The first line of the input contains Pasha’s string s of length from 2 to 2·105 characters, consisting of lowercase Latin letters.

The second line contains a single integer m (1 ≤ m ≤ 105) — the number of days when Pasha changed his string.

The third line contains m space-separated elements ai (1 ≤ ai; 2·ai ≤ |s|) — the position from which Pasha started transforming the string on the i-th day.

Output
In the first line of the output print what Pasha’s string s will look like after m days.

input
abcdef
1
2
output
aedcbf

input
vwxyz
2
2 2
output
vwxyz

input
abcdef
3
1 2 3
output
fbdcea

题目大意:字符串翻转m次,每次翻转a[i]到|s| - a[i]+ 1这一段。

题目思路:直接写的话会超时,应该先记录每个i位置的翻转次数,可以知道如果该位置翻转偶数次就相当于不变,奇数次则改变。

题目链接:codeforces 525B

以下是代码:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int a[100100] = {0};
int main(){
    string s;
    cin >> s;
    int m;
    cin >> m;
    for (int i = 0; i < m; i++)
    {
        int num;
        cin >> num; 
        a[num]++;        
    }
    int len = s.size();
    int sum = 0;
    for (int i = 0; i <= len / 2; i++)
    {
        sum += a[i];         //每位上翻转的次数
        if (sum % 2)
            swap(s[i - 1],s[len - i]);
    }
    cout << s << endl;
    return 0;
}

你可能感兴趣的:(codeforces,字符串)