当前位置: 代码迷 >> 综合 >> Codeforces Round #386 (Div. 2) 746B Decoding 【模拟】
  详细解决方案

Codeforces Round #386 (Div. 2) 746B Decoding 【模拟】

热度:92   发布时间:2023-11-11 11:05:17.0

题目传送门:点击打开链接

B. Decoding
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Polycarp is mad about coding, that is why he writes Sveta encoded messages. He calls themedian letter in a word the letter which is in the middle of the word. If the word's length is even, the median letter is the left of the two middle letters. In the following examples, the median letter is highlighted:contest,info. If the word consists of single letter, then according to above definition this letter is the median letter.

Polycarp encodes each word in the following way: he writes down the median letter of the word, then deletes it and repeats the process until there are no letters left. For example, he encodes the wordvolga as logva.

You are given an encoding s of some word, your task is to decode it.

Input

The first line contains a positive integer n (1?≤?n?≤?2000) — the length of the encoded word.

The second line contains the string s of lengthn consisting of lowercase English letters — the encoding.

Output

Print the word that Polycarp encoded.

Examples
Input
5
logva
Output
volga
Input
2
no
Output
no
Input
4
abba
Output
baba
Note

In the first example Polycarp encoded the word volga. At first, he wrote down the letter l from the position 3, after that his word looked likevoga. After that Polycarp wrote down the lettero from the position 2, his word became vga. Then Polycarp wrote down the letterg which was at the second position, the word becameva. Then he wrote down the letter v, then the letter a. Thus, the encoding looked likelogva.

In the second example Polycarp encoded the word no. He wrote down the letter n, the word becameo, and he wrote down the letter o. Thus, in this example, the word and its encoding are the same.

In the third example Polycarp encoded the word baba. At first, he wrote down the letter a, which was at the position2, after that the word looked like bba. Then he wrote down the letter b, which was at the position2, his word looked like ba. After that he wrote down the letter b, which was at the position1, the word looked like a, and he wrote down that letter a. Thus, the encoding isabba.


题意:规定:有一个单词,如果它的长度为奇数。那么这个单词中间的字母为正中间的那个字母。如果长度为偶数,那么中间的字母为分割线靠左边的那个字母。

把这个中间的字母写下来并删去,重复此步骤。可以得到一个新的单词。现在给你这个新单词,让你推出来原单词的样子。


思路:找一下变换的规律。找到中间线,沿着这条线向两个方向遍历即可。

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define M(a) memset(a,0,sizeof(a))
int main()
{char str[2005];char str2[2500];int n;while(~scanf("%d",&n)){scanf("%s",str);int len=strlen(str);int temp=(len-1)/2;if(len%2==0){int xbl=0;int xbr=1;for(int i=0; i<len; i++){if(i%2==0){str2[temp-xbl]=str[i];xbl++;}else{str2[temp+xbr]=str[i];xbr++;}}str2[len]='\0';}else{str2[temp]=str[0];int xbl=1;int xbr=1;for(int i=1;i<len;i++){if(i%2==1){str2[temp-xbl]=str[i];xbl++;}else{str2[temp+xbr]=str[i];xbr++;}}}for(int i=0; i<len; i++){printf("%c",str2[i]);}printf("\n");}return 0;
}



  相关解决方案