Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cf581D- Solution added in Java and Python #4555

Closed
147 changes: 146 additions & 1 deletion solutions/bronze/cf-581D.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
id: cf-581D
source: CF
title: Three Logos
author: Chongtian Ma
author: Chongtian Ma, Ayush Shukla
---

[Official Editorial](https://codeforces.com/blog/entry/20508)
Expand Down Expand Up @@ -89,4 +89,149 @@ int main() {
```

</CPPSection>
<JavaSection>

```java
import java.io.*;
import java.util.*;

public class Logos {
public static void main(String[] args) {
Kattio io = new Kattio();
int[] logos = new int[6];
for (int i = 0; i < logos.length; i++) { logos[i] = io.nextInt(); }
int k;
for (int i = 0; i < logos.length; i += 2) {
if (logos[i] < logos[i + 1]) {
k = logos[i];
logos[i] = logos[i + 1];
logos[i + 1] = k;
}
}
if (logos[0] == logos[2] && logos[4] == logos[2] &&
(logos[1] + logos[3] + logos[5]) == logos[0]) {
int n = logos[0];
char c = 'A';
io.println(n);
k = 0;
for (int j, i = 1; i < 6; i += 2, c++) {
for (j = 0; j < logos[i]; j++) {
for (k = 0; k < n; k++) { io.print(c); }
io.println();
}
}
io.close();
return;
}

int n = Math.max(logos[0], Math.max(logos[2], logos[4]));
int h = -1;

char[] let = new char[] {'A', 'B', 'C'};
for (int i = 0; i < 6; i += 2) {
if (logos[i] == n) {
h = logos[i + 1];
char _t = let[2];
let[2] = let[i / 2];
let[i / 2] = _t;
logos[i] = logos[4];
logos[i + 1] = logos[5];
logos[4] = -1;
logos[5] = -1;
break;
}
}
if (h == -1) {
io.println(-1);
io.close();
return;
}
boolean ok = false;
int p = -1;
if (logos[0] == logos[2] && logos[0] == n - h &&
logos[1] + logos[3] == n) {
ok = true;
p = logos[1];
} else if (logos[0] == logos[3] && logos[0] == n - h &&
logos[1] + logos[2] == n) {
ok = true;
p = logos[1];
} else if (logos[1] == logos[2] && logos[1] == n - h &&
logos[0] + logos[3] == n) {
ok = true;
p = logos[0];
} else if (logos[1] == logos[3] && logos[1] == n - h &&
logos[0] + logos[2] == n) {
ok = true;
p = logos[0];
}
if (!ok) {
io.println(-1);
io.close();
return;
}
io.println(n);
k = 0;
for (int j = 0; j < h; j++) {
for (k = 0; k < n; k++) { io.print(let[2]); }
io.println();
}

k = 0;
for (int j = h; j < n; j++) {
for (k = 0; k < p; k++) { io.print(let[0]); }
for (k = p; k < n; k++) { io.print(let[1]); }
io.println();
}
io.close();
}
// CodeSnip{Kattio}
}
```

</JavaSection>
<PySection>

```py
a, b, c, d, e, f = list(map(int, input().split()))
n, n2 = 1, a * b + c * d + e * f
while n * n < n2:
n += 1

if n * n > n2:
print(-1)
exit()

l = sorted(
[
[max(a, b), min(a, b), "A"],
[max(c, d), min(c, d), "B"],
[max(e, f), min(e, f), "C"],
]
)

if l[2][0] != n:
print(-1)
exit()

v = str(n) + "\n" + (l[2][2] * n + "\n") * l[2][1]

if l[0][0] == n and l[1][0] == n:
for i in range(2):
v += (l[i][2] * n + "\n") * l[i][1]
else:
s = n - l[2][1]
if s not in l[0] or s not in l[1]:
print(-1)
exit()
logos, y = (
l[0][1] if l[0][0] == s else l[0][0],
l[1][1] if l[1][0] == s else l[1][0],
)
v += (l[0][2] * logos + l[1][2] * y + "\n") * s

print(v)
```

</PySection>
</LanguageSection>
Loading