Hidden Word

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Let’s define a grid to be a set of tiles with 2 rows and 13 columns. Each tile has an English letter written in it. The letters don't have to be unique: there might be two or more tiles with the same letter written on them. Here is an example of a grid:

ABCDEFGHIJKLM
NOPQRSTUVWXYZ

We say that two tiles are adjacent if they share a side or a corner. In the example grid above, the tile with the letter 'A' is adjacent only to the tiles with letters 'B', 'N', and 'O'. A tile is not adjacent to itself.

A sequence of tiles is called a path if each tile in the sequence is adjacent to the tile which follows it (except for the last tile in the sequence, which of course has no successor). In this example, "ABC" is a path, and so is "KXWIHIJK". "MAB" is not a path because 'M' is not adjacent to 'A'. A single tile can be used more than once by a path (though the tile cannot occupy two consecutive places in the path because no tile is adjacent to itself).

You’re given a string s which consists of 27 upper-case English letters. Each English letter occurs at least once in s. Find a grid that contains a path whose tiles, viewed in the order that the path visits them, form the string s. If there’s no solution, print "Impossible" (without the quotes).

Input

The only line of the input contains the string s, consisting of 27 upper-case English letters. Each English letter occurs at least once in s.

Output

Output two lines, each consisting of 13 upper-case English characters, representing the rows of the grid. If there are multiple solutions, print any of them. If there is no solution print "Impossible".

Examples
Input
ABCDEFGHIJKLMNOPQRSGTUVWXYZ
Output
YXWVUTGHIJKLM
ZABCDEFSRQPON
Input
BUVTYZFQSNRIWOXXGJLKACPEMDH
Output
Impossible
【分析】先找到那个出现两次的字母的位置,然后分四种情况讨论,两次都在中间,一个在首一个在中间,一个在尾一个在中间,一个在首一个在尾。
两个位置之间的字母肯定是要分成两行的,然后就模拟了。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof a)
typedef long long ll;
using namespace std;
const int N = ;
const int M = ;
int n=,m,k,l;
string str,s,a="",b="",c="",d="";
int vis[N];
int main() {
cin>>str;
vector<int>p;
for(int i=; i<str.size(); i++) {
vis[str[i]]++;
}
for(int i=; i<str.size(); i++) {
if(vis[str[i]]==) {
s[]=str[i];
p.push_back(i);
}
}//printf("%d %d\n",p[0],p[1]);
if(p.size()>||p[]-p[]==) {
puts("Impossible");
exit();
}
bool Find=false;
for(int i=; i<str.size(); i++) {
if(Find&&str[i]==s[])break;
if(!Find&&str[i]==s[])Find=true;
else if(Find)a+=str[i];
}
if(str[]!=s[]&&str[str.size()-]!=s[]) {
for(int i=a.size()/-; i>=; i--)b+=a[i];
for(int i=a.size()/; i<a.size(); i++)c+=a[i];
//cout<<b<<" "<<c<<endl;
for(k=p[];k>=&&b.size()<;k--)b+=str[k]; for(int i=str.size()-;b.size()<;i--)b+=str[i];
for(int i=p[]+;c.size()<&&i<str.size();i++)c+=str[i];
for(int i=;i<=k&&c.size()<;i++)c+=str[i];
cout<<b<<endl<<c<<endl;
} else if(str[]==s[]&&str[str.size()-]!=s[]){
for(int i=a.size()/-; i>=; i--)b+=a[i];
for(int i=a.size()/; i<a.size(); i++)c+=a[i];
for(k=p[];b.size()<;k++)b+=str[k];
for(int i=str.size()-;c.size()<;i--)c+=str[i];
cout<<b<<endl<<c<<endl;
} else if(str[]!=s[]&&str[str.size()-]==s[]){
for(int i=a.size()/-; i>=; i--)b+=a[i];
for(int i=a.size()/; i<a.size(); i++)c+=a[i];
for(k=p[];b.size()<;k--)b+=str[k];
for(int i=;c.size()<;i++)c+=str[i];
cout<<b<<endl<<c<<endl;
}else if(str[]==s[]&&str[str.size()-]==s[]){
for(int i=;i<;i++)b+=str[i];
for(int i=str.size()-;c.size()<;i--)c+=str[i];
cout<<b<<endl<<c<<endl;
}
return ;
}

codeforces 725/C的更多相关文章

  1. 【Codeforces Round 725】Canada Cup 2016

    模拟Canada Cup 2016,ABC三题,Rank1376 第三题卡住了 Codeforces 725 C 求出两个相同字符的位置,记为x和y. 然后考虑把相同的那个字符放在第一行的什么地方, ...

  2. 刷题记录:Codeforces Round #725 (Div. 3)

    Codeforces Round #725 (Div. 3) 20210704.网址:https://codeforces.com/contest/1538. 感觉这个比上一个要难. A 有一个n个数 ...

  3. Codeforces Round #725 (Div. 3) A-D,F题解

    A. Stone Game 思路:总共3种情况,都从最左端被拿走,都从最右端被拿走,左侧的从最左端被拿走且右侧的从最右端被拿走,取最小值即可 代码: //CF-725.A #include<bi ...

  4. Codeforces 725B Food on the Plane

    B. Food on the Plane time limit per test:2 seconds memory limit per test:256 megabytes input:standar ...

  5. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  6. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  7. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  8. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  9. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

随机推荐

  1. Stern-Brocot树 及 法里级数分析

    Stern-Brocot树产生了所有分子分母互素的分数 从初始0/1 1/0 -> m/n m'/n'出发,不断往中间添加 (m+m')/(n+n')容易推得 n * m' - m * n' = ...

  2. [vijos P1595] 学校网络

    有生以来做的第二道IOI题目居然也是96'的,又是一道比我还老的题目. 纯属复习或者说再学一遍Tarjan算法,本题的主要算法就是Tarjan+缩点,对于两个子问题的答案,根据解题:强连通缩点为拓扑图 ...

  3. Section 1.4 Packing Rectangles

    本来是USACO Training的1.4.1的,但是介于今早过了食物链想起了这道题实在是太怨念了,翻出自己写的AC程序居然有5KB!! 思路很简单,枚举,而且就图中的六种情况.但是第六种变化状况太多 ...

  4. 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序

    1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...

  5. 腾讯PK微软 王者之战一触即发

    六一儿童节,曾在微信中热闹一时的智能机器人“小冰”被腾讯封杀.一场微软和腾讯的战争正式拉开帷幕.前者是PC时代的霸主,后者是中国移动互联网的王者.在此之前,类似的战争,腾讯曾经历无数次,从十年前的“珊 ...

  6. Oracle GoldenGate 12c 新特性

    针对Oracle 12c的专门优化: 针对Oracle数据库的集成交付模式:提升在oracle DB中目标端的交付速度: 针对非Oracle数据库的协调交付模式:降低非oracle DB中多线程配置的 ...

  7. 《Java7中 下划线的新特性》

    //Java7引入了一个新功能:程序员可以在数值中使用下画线,不管是 //整形数值,还是浮点型数值,都可以自由地使用下划线.通过下划线 //分隔,可以更直观的分辨数值中到底有多少位. public c ...

  8. hdu1005 矩阵

    //Accepted hdu1005 0MS 248K #include <cstdio> #include <cstring> #include <iostream&g ...

  9. hdu 1025 dp 最长上升子序列

    //Accepted 4372 KB 140 ms //dp 最长上升子序列 nlogn #include <cstdio> #include <cstring> #inclu ...

  10. oracle字符集的查看和修改

    Oracle修改字符集2.3oracle数据库的字符集更改 A.oracle server 端 字符集查询 select userenv(‘language’) from dual 其中NLS_CHA ...