fork download
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3.  
  4. bool Brovko_condition_zero(int a, int b, int p, int q, int r, int s)
  5. {
  6. int K, L, T;
  7. K=(a*b); //Площадь участка.
  8. L=(p*q); //Площадь первого дома.
  9. T=(r*s); //Площадь второго дома.
  10. if (q+s>2*b && p+r>a)
  11. {
  12. return false;
  13. }
  14. else if (q+s>b && p+r>2*a)
  15. {
  16. return false;
  17. }
  18. else if (L+T>K)
  19. {
  20. return false;
  21. }
  22. else
  23. {
  24. return true;
  25. }
  26. }
  27.  
  28. bool Brovko_condition(int a, int b, int p, int q, int r, int s)
  29. {
  30. if (q>b || s>b || r>a || p>a)
  31. {
  32. return false;
  33. }
  34. int K=(a*b); //Площадь участка.
  35. int L=(p*q); //Площадь первого дома.
  36. int T=(r*s); //Площадь второго дома.
  37. return ! ((q+s>2*b && p+r>a) || (q+s>b && p+r>2*a) || (L+T>K));
  38. }
  39.  
  40. bool Brovko_condition2(int a, int b, int p, int q, int r, int s)
  41. {
  42. if (q>b || s>b || r>a || p>a) return false;
  43. if(p+r<=2*a && q+s<=b) return true;
  44. else if (q+s<=2*b && p+r<=a) return true;
  45. else return false;
  46. }
  47.  
  48. bool Brovko_condition3(int a, int b, int p, int q, int r, int s)
  49. {
  50. if ((q>b && q>a) || (s>b && s>a) || (r>a && r>b) || (p>a && p>b))
  51. {
  52. return false; //printf("Дома не могут быть построены. \n");
  53. }
  54. else
  55. {
  56. if((p+r<=2*a && q+s<=b) || (q+s<=2*b && p+r<=a))
  57. {
  58. return true; //printf("Дома могут быть построены на заданном участке. \n");
  59. }
  60. else if((p+r<=2*b && q+s<=a) || (q+s<=2*a && p+r<=b))
  61. {
  62. return true; //printf("Дома могут быть построены на заданном участке при повороте на 90 градусов. \n");
  63. }
  64. else if((r+q<=2*b && s+p<=a) || (p+s<=2*a && r+q<=b))
  65. {
  66. return true; //printf("Дома могут быть построены на заданном участке при повороте дома со сторонами r s на 90 градусов. \n");
  67. }
  68. else if((p+s<=2*b && r+q<=a) || (q+r<=2*a && p+s<=b))
  69. {
  70. return true; //printf("Дома могут быть построены на заданном участке при повороте дома со сторонами p q на 90 градусов. \n");
  71. }
  72. else
  73. {
  74. return false; //printf("Дома не могут быть построены на заданном участке. \n");
  75. }
  76. }
  77. }
  78.  
  79. bool Brovko_condition4(int a, int b, int p, int q, int r, int s)
  80. {
  81. if ((q>=b && q>=a) || (s>=b && s>=a) || (r>=a && r>=b) || (p>=a && p>=b))
  82. {
  83. return false; //printf("Дома не могут быть построены. \n");
  84. }
  85. else
  86. {
  87. if((p+r<2*a && q+s<b) || (q+s<2*b && p+r<a))
  88. {
  89. return true; //printf("Дома могут быть построены на заданном участке. \n");
  90. }
  91. else if((p+r<2*b && q+s<a) || (q+s<2*a && p+r<b))
  92. {
  93. return true; //printf("Дома могут быть построены на заданном участке при повороте на 90 градусов. \n");
  94. }
  95. else if((r+q<2*b && s+p<a) || (p+s<2*a && r+q<b))
  96. {
  97. return true; //printf("Дома могут быть построены на заданном участке при повороте дома со сторонами r s на 90 градусов. \n");
  98. }
  99. else if((p+s<2*b && r+q<a) || (q+r<2*a && p+s<b))
  100. {
  101. return true; //printf("Дома могут быть построены на заданном участке при повороте дома со сторонами p q на 90 градусов. \n");
  102. }
  103. else
  104. {
  105. return false; //printf("Дома не могут быть построены на заданном участке. \n");
  106. }
  107. }
  108. }
  109.  
  110. bool Antonenko_condition_part(int a, int b, int p, int q, int r, int s)
  111. {
  112. return (p+r<=a && q<= b && s<=b) //Два случая нарисованные у Ильи Бровко
  113. || (q+s<=b && p<= a && r<=a); //без поворотов
  114. }
  115.  
  116. bool Antonenko_condition(int a, int b, int p, int q, int r, int s)
  117. {
  118. return Antonenko_condition_part(a,b,p,q,r,s) //всевозможные повороты
  119. || Antonenko_condition_part(a,b,q,p,r,s) //достаточно вращать только
  120. || Antonenko_condition_part(a,b,p,q,s,r) // внутренние участки
  121. || Antonenko_condition_part(a,b,q,p,s,r);
  122. }
  123.  
  124. bool Mazurok_condition(int a, int b, int p, int q, int r, int s)
  125. {
  126. return (a >= p && a >= r && b >= (q + s)) || // Дома стоят вдоль b (4 варианта)
  127. (a >= q && a >= r && b >= (p + s)) ||
  128. (a >= p && a >= s && b >= (q + r)) ||
  129. (a >= q && a >= s && b >= (p + r)) ||
  130. (b >= p && b >= r && a >= (q + s)) || // Дома стоят вдоль a (4 варианта)
  131. (b >= q && b >= r && a >= (p + s)) ||
  132. (b >= p && b >= s && a >= (q + r)) ||
  133. (b >= q && b >= s && a >= (p + r));
  134. }
  135.  
  136. int main(void) {
  137. int a, b, p, q, r, s; //целые, чтобы страховаться от ошибок округления
  138. const int MIN=1, MAX=7;
  139. for (a=MIN;a<MAX;a++)
  140. for (b=MIN;b<MAX;b++)
  141. for (p=MIN;p<MAX;p++)
  142. for (q=MIN;q<MAX;q++)
  143. for (r=MIN;r<MAX;r++)
  144. for (s=MIN;s<MAX;s++)
  145. {
  146. if (Mazurok_condition(a, b, p, q, r, s)
  147. && !Antonenko_condition(a, b, p, q, r, s))
  148. {
  149. printf( "%d %d %d %d %d %d => B=%s A=%s\n",
  150. a, b, p, q, r, s,"yes","no");
  151. }
  152. if (!Mazurok_condition(a, b, p, q, r, s)
  153. && Antonenko_condition(a, b, p, q, r, s))
  154. {
  155. printf( "%d %d %d %d %d %d => B=%s A=%s\n",
  156. a, b, p, q, r, s,"no","yes");
  157. }
  158.  
  159. }
  160.  
  161. return 0;
  162. }
  163.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
Standard output is empty