A. Ksenia and Pan Scales
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Ksenia has ordinary pan scales and several weights of an equal mass. Ksenia has already put some weights on the scales, while other weights are untouched. Ksenia is now wondering whether it is possible to put all the remaining weights on the scales so that the scales were in equilibrium.

The scales is in equilibrium if the total sum of weights on the left pan is equal to the total sum of weights on the right pan.

Input

The first line has a non-empty sequence of characters describing the scales. In this sequence, an uppercase English letter indicates a weight, and the symbol "|" indicates the delimiter (the character occurs in the sequence exactly once). All weights that are recorded in the sequence before the delimiter are initially on the left pan of the scale. All weights that are recorded in the sequence after the delimiter are initially on the right pan of the scale.

The second line contains a non-empty sequence containing uppercase English letters. Each letter indicates a weight which is not used yet.

It is guaranteed that all the English letters in the input data are different. It is guaranteed that the input does not contain any extra characters.

Output

If you cannot put all the weights on the scales so that the scales were in equilibrium, print string "Impossible". Otherwise, print the description of the resulting scales, copy the format of the input.

If there are multiple answers, print any of them.

Examples
input

Copy
AC|T
L
output

Copy
AC|TL
input

Copy
|ABC
XYZ
output

Copy
XYZ|ABC
input

Copy
W|T
F
output

Copy
Impossible
input

Copy
ABC|
D
output

Copy
Impossible

题意:有两行字符串,如何把第二行的字符串加到第一行,使“|”左右两边字符个数相等,如果不能,输出Impossible

我的代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<limits.h>
#define ll long long
using namespace std;
const int maxn=1e6+10;
char ch[maxn],c[maxn];
char a[maxn],b[maxn];
int main()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>ch;
cin>>c;
int l1=strlen(ch);
int l2=strlen(c);
int la=0,lb=0;
for(int i=0;;i++)
{
if(ch[i]=='|') break;
a[la++]=ch[i];
}
for(int i=la+1;i<l1;i++) b[lb++]=ch[i];
int La=la,Lb=lb;
if(l2<abs(la-lb)) cout<<"Impossible\n";
else
{
if((l1-1+l2)%2)
{
cout<<"Impossible\n";
}
else if(la==lb)
{
if(l2%2) cout<<"Impossible\n";
else
{
for(int i=0;i<=(l2-1)/2;i++) cout<<c[i];
cout<<a<<"|"<<b;
for(int i=(l2-1)/2+1;i<l2;i++) cout<<c[i];
cout<<endl;
}
}
else if(la>lb)
{
if(l2==la-lb) cout<<a<<"|"<<b<<c<<endl;
else
{
for(int i=0;i<(la+lb+l2)/2-la;i++) cout<<c[i];
cout<<a<<"|"<<b;
for(int i=(la+lb+l2)/2-la;i<l2;i++) cout<<c[i];
cout<<endl;
}
}
else if(la<lb)
{
if(l2==lb-la) cout<<a<<c<<"|"<<b<<endl;
else
{
for(int i=0;i<(l1-1+l2)/2-la;i++) cout<<c[i];
cout<<a<<"|"<<b;
for(int i=(l1-1+l2)/2-la;i<l2;i++) cout<<c[i];
cout<<endl;
}
}
}
return 0;
}

帆神的代码:

#include<stdio.h>
#include<string.h>
char a[1006],b[1006];
int main()
{
scanf("%s",a);
scanf("%s",b);
int la=strlen(a),lb=strlen(b);
int u;
for(int i=0;i<la;i++)
{
if(a[i]=='|')
u=i;
}
int x=u,y=la-u-1;//x—前半部分字符串的长度,y—后半部分字符串的长度
if(x>y&&lb>=x-y&&lb%2==(x-y)%2)
{
int p=(lb-x+y)/2;
for(int i=0;i<u;i++)
printf("%c",a[i]);
for(int i=0;i<p;i++)
printf("%c",b[i]);
printf("|");
for(int i=p;i<lb;i++)
printf("%c",b[i]);
for(int i=u+1;i<la;i++)
printf("%c",a[i]);
printf("\n");
}
else if(y>x&&lb>=y-x&&lb%2==(y-x)%2)
{
int p=(lb+x-y)/2;
for(int i=0;i<u;i++)
printf("%c",a[i]);
for(int i=p;i<lb;i++)
printf("%c",b[i]);
printf("|");
for(int i=u+1;i<la;i++)
printf("%c",a[i]);
for(int i=0;i<p;i++)
printf("%c",b[i]);
printf("\n");
}
else if(x==y&&lb%2==0)
{
int p=(lb+x-y)/2;
for(int i=0;i<u;i++)
printf("%c",a[i]);
for(int i=p;i<lb;i++)
printf("%c",b[i]);
printf("|");
for(int i=u+1;i<la;i++)
printf("%c",a[i]);
for(int i=0;i<p;i++)
printf("%c",b[i]);
printf("\n");
}
else
printf("Impossible\n");
return 0;
}

Codeforces Round #224 (Div. 2) A. Ksenia and Pan Scales的更多相关文章

  1. Codeforces Round #224 (Div. 2)

    题目:http://codeforces.com/contest/382 A Ksenia and Pan Scales 一个求天平是否能够平衡的题目...水题,注意一下结果的输出就行. #inclu ...

  2. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  3. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  4. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  7. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  8. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

随机推荐

  1. Codeforces 448E - Divisors

    448E - Divisors 思路: dfs.注意如果是1,直接返回,因为1的因子还是1. 因为x因子的因子还是x的因子,所以可以事先处理好x因子的因子在x因子中的位置. 不用这个方法也可以,用ma ...

  2. 2017-03-03 Oracle在.Net中出现未在本地计算机上注册“OraOLEDB.Oracle”提供程序的错误

    在前面的Oracle配置完成后,打开项目运行出错,出现未在本地计算机上注册“OraOLEDB.Oracle”提供程序的错误,看到“注册”两个字,首先想到,难道还要用命令行注册一下?果不其然,需要手动注 ...

  3. Style、ControlTemplate 和 DataTemplate 触发器

    本文摘要:    1:属性触发器:    2:数据触发器:    3:事件触发器: Style.ControlTemplate 和 DataTemplate 都有触发器集合.    属性触发器只检查W ...

  4. 为tomcat指定jdk

    安装好jdk,不配置环境变量 windows平台 在catalina.bat文件和setclasspath.bat文件开头的空白处加上如下两句(指定JDK): \jre linux平台 在catali ...

  5. 我的Java学习笔记 -开发环境搭建

    开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...

  6. 『Networkx』常用方法

    这是一个用于分析'图'结构的包,由于我只是用到了浅显的可视化功能,所以这个介绍会对其使用浅尝辄止. 解决matplotlib中文字体缺失问题, from pylab import mpl mpl.rc ...

  7. km板子(二分图最大权匹配)

    //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack- ...

  8. springboot activiti关闭验证自动部署

    # spring-activiti # 自动部署验证设置:true-开启(默认).false-关闭 spring.activiti.check-process-definitions=false # ...

  9. quartz---(1)

    Quartz Quartz是什么? 简单的一些例子 Quartz是什么 简单的认为Quartz是是一个定时器. 1.1. 下载 http://www.quartz-scheduler.org/down ...

  10. [LeetCode] 41. First Missing Positive ☆☆☆☆☆(第一个丢失的正数)

    Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2, ...