Three Logos

CodeForces - 581D

Three companies decided to order a billboard with pictures of their logos. A billboard is a big square board. A logo of each company is a rectangle of a non-zero area.

Advertisers will put up the ad only if it is possible to place all three logos on the billboard so that they do not overlap and the billboard has no empty space left. When you put a logo on the billboard, you should rotate it so that the sides were parallel to the sides of the billboard.

Your task is to determine if it is possible to put the logos of all the three companies on some square billboard without breaking any of the described rules.

Input

The first line of the input contains six positive integers x1, y1, x2, y2, x3, y3 (1 ≤ x1, y1, x2, y2, x3, y3 ≤ 100), where xi and yi determine the length and width of the logo of the i-th company respectively.

Output

If it is impossible to place all the three logos on a square shield, print a single integer "-1" (without the quotes).

If it is possible, print in the first line the length of a side of square n, where you can place all the three logos. Each of the next n lines should contain nuppercase English letters "A", "B" or "C". The sets of the same letters should form solid rectangles, provided that:

  • the sizes of the rectangle composed from letters "A" should be equal to the sizes of the logo of the first company,
  • the sizes of the rectangle composed from letters "B" should be equal to the sizes of the logo of the second company,
  • the sizes of the rectangle composed from letters "C" should be equal to the sizes of the logo of the third company,

Note that the logos of the companies can be rotated for printing on the billboard. The billboard mustn't have any empty space. If a square billboard can be filled with the logos in multiple ways, you are allowed to print any of them.

See the samples to better understand the statement.

Examples

Input
5 1 2 5 5 2
Output
5
AAAAA
BBBBB
BBBBB
CCCCC
CCCCC
Input
4 4 2 6 4 2
Output
6
BBBBBB
BBBBBB
AAAACC
AAAACC
AAAACC
AAAACC sol:只有三个标记当然可以暴力模拟,就是判-1略微蛋疼
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const int N=;
int n=,n1,n2,n3,m1,m2,m3;
char Map[N][N];
inline void OutPut()
{
Wl(n);
int i,j;
for(i=;i<=n;i++)
{
for(j=;j<=n;j++) putchar(Map[i][j]);
putchar('\n');
}
}
#define NO {puts("-1"); exit(0);}
inline void Judge()
{
if(n*n!=(n1*m1+n2*m2+n3*m3)) NO
if(n1==n&&n2==n&&n3==n) if(m1+m2+m3!=n) NO
int i,j,c1=,c2=,c3=;
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(Map[i][j]=='A') c1++;
else if(Map[i][j]=='B') c2++;
else if(Map[i][j]=='C') c3++;
}
}
if((c1!=n1*m1)||(c2!=n2*m2)||(c3!=n3*m3)) NO
}
int main()
{
int i,j,Lastn,Lastm;
R(n1); R(m1); R(n2); R(m2); R(n3); R(m3);
if(n1<m1) swap(n1,m1); if(n2<m2) swap(n2,m2); if(n3<m3) swap(n3,m3);
n=max(n1,max(m1,max(n2,max(m2,max(n3,m3)))));
memset(Map,' ',sizeof Map);
if(n1==n)
{
for(i=;i<=n1;i++) for(j=;j<=m1;j++) Map[i][j]='A';
if(n2==n)
{
for(i=;i<=n;i++) for(j=m1+;j<=m1+m2;j++) Map[i][j]='B';
}
else
{
if(n2+m1==n) swap(n2,m2);
for(i=;i<=n2;i++) for(j=m1+;j<=n;j++) Map[i][j]='B';
}
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(!isupper(Map[i][j])) Map[i][j]='C';
}
}
}
else if(n2==n)
{
for(i=;i<=n2;i++) for(j=;j<=m2;j++) Map[i][j]='B';
if(n1==n)
{
for(i=;i<=n;i++) for(j=m2+;j<=m2+m1;j++) Map[i][j]='A';
}
else
{
if(n1+m2==n) swap(n1,m1);
for(i=;i<=n1;i++) for(j=m2+;j<=n;j++) Map[i][j]='A';
}
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(!isupper(Map[i][j])) Map[i][j]='C';
}
}
}
else
{
for(i=;i<=n3;i++) for(j=;j<=m3;j++) Map[i][j]='C';
if(n1==n)
{
for(i=;i<=n;i++) for(j=m3+;j<=m3+m1;j++) Map[i][j]='A';
}
else
{
if(n1+m3==n) swap(n1,m1);
for(i=;i<=n1;i++) for(j=m3+;j<=n;j++) Map[i][j]='A';
}
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(!isupper(Map[i][j])) Map[i][j]='B';
}
}
}
Judge();
OutPut();
return ;
}
/*
Input
5 1 5 2 5 2
Output
5
AAAAA
BBBBB
BBBBB
CCCCC
CCCCC Input
4 4 2 6 4 2
Output
6
BBBBBB
BBBBBB
AAAACC
AAAACC
AAAACC
AAAACC input
100 100 100 100 100 100
output
-1
*/
 

codeforces581D的更多相关文章

随机推荐

  1. 认识JWT

    1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该 ...

  2. 1.3创建项目「深入浅出ASP.NET Core系列」

    控制台创建项目 dotnet new --help 使用控制台采集项目,务必要熟练使用命令,--help是命令帮助的指明灯,在你无法google的时候,可以离线状态最快的帮助到你. 根据模板名称,我们 ...

  3. SLAM+语音机器人DIY系列:(八)高阶拓展——1.miiboo机器人安卓手机APP开发

    android要与ROS通讯,一种是基于rosbridge,另一种是基于rosjava库. 相关参考例子工程 rosbridge例子: https://github.com/hibernate2011 ...

  4. Python两步实现关联规则Apriori算法,参考机器学习实战,包括频繁项集的构建以及关联规则的挖掘

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  5. FSLIB.NETWORK 简易使用指南

    1.介绍 FSLIB.NETWORK 是一款开源HTTP的高性能高易用性网络库,是对HttpWebRequest/HttpWebResponse的包装,目的是为了用起来更简单明了.设计的时候就为了提供 ...

  6. 杭电ACM2017--字符串统计

    字符串统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  7. 算法题:实现一个IP白名单过滤器

        最近看到一则招聘的JD,附了一个算法题的链接,原题如下: 请实现一个IP白名单过滤算法,实现以下接口 boolean addWhiteIpAddress(String ip); boolean ...

  8. 使用go, gin, gorm编写一个简单的curd的api接口

    go 是一门非常灵活的语言,既具有静态语言的高性能,又有动态语言的开发速度快的优点,语法也比较简单,下面是通过简单的代码实现了一个简单的增删改查 api 接口 hello world 常规版 新建 d ...

  9. 折腾Java设计模式之观察者模式

    观察者模式 Define a one-to-many dependency between objects where a state change in one object results in ...

  10. python3 Flask -day4 自定义url转换器

    url传参可以限定参数的数据类型,例如:限定user_id数据类型为int @app.route('/user/<int:user_id>') def my_list(user_id): ...