fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. bool canFormRectangle(int a1, int b1, int a2, int b2) {
  5. // Thử tất cả các cách xoay của 2 hình
  6. int w1[2] = {a1, b1};
  7. int h1[2] = {b1, a1};
  8. int w2[2] = {a2, b2};
  9. int h2[2] = {b2, a2};
  10.  
  11. for (int i = 0; i < 2; ++i) { // xoay hình 1
  12. for (int j = 0; j < 2; ++j) { // xoay hình 2
  13. // Cùng chiều cao, ghép theo chiều ngang
  14. if (h1[i] == h2[j] && w1[i] + w2[j] == h1[i])
  15. return true;
  16. if (h1[i] == h2[j])
  17. return true;
  18.  
  19. // Cùng chiều rộng, ghép theo chiều dọc
  20. if (w1[i] == w2[j] && h1[i] + h2[j] == w1[i])
  21. return true;
  22. if (w1[i] == w2[j])
  23. return true;
  24.  
  25. // Ghép tạo hình chữ nhật: cùng chiều cao, tổng chiều rộng
  26. if (h1[i] == h2[j] && (w1[i] + w2[j] > 0))
  27. return true;
  28.  
  29. if (w1[i] == w2[j] && (h1[i] + h2[j] > 0))
  30. return true;
  31.  
  32. // Hoặc đơn giản:
  33. if ((h1[i] == h2[j] && w1[i] + w2[j] == h1[i] + w2[j]) ||
  34. (w1[i] == w2[j] && h1[i] + h2[j] == h1[i] + h2[j]))
  35. return true;
  36. }
  37. }
  38.  
  39. return false;
  40. }
  41.  
  42. int main() {
  43. int a1, b1, a2, b2;
  44. cin >> a1 >> b1 >> a2 >> b2;
  45.  
  46. if (canFormRectangle(a1, b1, a2, b2))
  47. cout << "1\n";
  48. else
  49. cout << "0\n";
  50.  
  51. return 0;
  52. }
Success #stdin #stdout 0s 5312KB
stdin
1 5 1 9
1 5 2 3
stdout
1