fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define FOR(i, a, b) for(int i = a, _b = b; i <= _b; i++)
  4. int A[3], B[3], C = 0, i_pos = 0, j_pos = 0;
  5. char billboard[700][700], char_rec[3] = {'A', 'B', 'C'};
  6.  
  7. void place(char c, int a, int b) {
  8. FOR(i, i_pos, i_pos + a - 1) FOR(j, j_pos, j_pos + b - 1) {
  9. billboard[i][j] = c;
  10. }
  11. }
  12.  
  13. bool check() {
  14. FOR(i, 0, (1 << 3) - 1) {
  15. FOR(j, 0, 2) {
  16. if((1 << j) & i) {
  17. place(char_rec[j], A[j], B[j]);
  18. }
  19. else {
  20. place(char_rec[j], B[j], A[j]);
  21. }
  22. FOR(dem1, 0, C - 1) {
  23. FOR(dem2, 0, C - 1) cout << billboard[dem1][dem2];
  24. cout << "\n";
  25. }
  26. FOR(dem1, 0, C - 1) FOR(dem2, 0, C - 1) {
  27. if(billboard[dem1][dem2] == '0') {
  28. i_pos = dem1;
  29. j_pos = dem2;
  30. break;
  31. }
  32. }
  33. }
  34. bool state = true;
  35. FOR(dem1, 0, C - 1) FOR(dem2, 0, C - 1) if(billboard[dem1][dem2] == '0') state = false;
  36. if(state) {
  37. FOR(dem1, 0, C - 1) {
  38. FOR(dem2, 0, C - 1) cout << billboard[dem1][dem2];
  39. cout << "\n";
  40. }
  41. return true;
  42. }
  43. FOR(dem1, 0, C - 1) FOR(dem2, 0, C - 1) billboard[dem1][dem2] = '0';
  44. i_pos = 0;
  45. j_pos = 0;
  46. }
  47. return false;
  48. }
  49. void run() {
  50. int sum = 0;
  51. FOR(i, 0, 2) {
  52. cin >> A[i] >> B[i];
  53. sum = sum + A[i] * B[i];
  54. }
  55. C = sqrt(sum);
  56. if(C * C != sum) {
  57. cout << -1 ;
  58. return;
  59. }
  60. FOR(dem1, 0, C - 1) FOR(dem2, 0, C - 1) {
  61. billboard[dem1][dem2] = '0';
  62. }
  63. if(check()) return;
  64. else cout << -1 ;
  65. }
  66.  
  67. int main() {
  68. ios::sync_with_stdio(false);
  69. cin.tie(nullptr);
  70. run();
  71. return 0;
  72. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
Standard output is empty