BUAA 1193

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
vwxyz

fbdcea

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值