Advertisement
a53

Vaslui1475

a53
Sep 11th, 2022
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. /*
  2. Pit-Rada Cosmin
  3. */
  4. #include <vector>
  5. #include <fstream>
  6. #include <algorithm>
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. void split(vector<int> &r, vector<int> &c, int mr, int mc, int &r1, int &c1, int &r2, int &c2)
  11. {
  12. vector<int> cnt(mr + mc + 1);
  13. for (int i = 0; i < r.size(); i++) cnt[r[i] + c[i]]++;
  14.  
  15. r1 = r2 = c1 = c2 = 0;
  16. if (r.size() % 2) return;
  17.  
  18. for (int d = 3, s = cnt[2]; d < mr + mc; s += cnt[d++])
  19. {
  20. if (!cnt[d] && s == r.size()/2)
  21. {
  22. c1 = max(d - mr, 1); r1 = d - c1;
  23. r2 = max(d - mc, 1); c2 = d - r2;
  24. return;
  25. }
  26. }
  27. }
  28.  
  29. int main()
  30. {
  31. ifstream fin("vaslui1475.in");
  32. ofstream fout("vaslui1475.out");
  33.  
  34. int mr, mc, n;
  35. fin >> mr >> mc >> n;
  36. vector<int> r(n), c(n);
  37. int r1, c1, r2, c2, r3, c3, r4, c4;
  38.  
  39. for (int i = 0; i < n; i++)
  40. fin >> r[i] >> c[i];
  41.  
  42. split(r, c, mr, mc, r1, c1, r2, c2);
  43.  
  44. for (int i = 0; i < n; i++)
  45. c[i] = mc + 1 - c[i];
  46. split(r, c, mr, mc, r3, c3, r4, c4);
  47. c3 = mc + 1 - c3, c4 = mc + 1 - c4; swap(r3, r4); swap(c3, c4);
  48. for (int i = 0; i < n; i++)
  49. c[i] = mc + 1 - c[i];
  50.  
  51. int diff = 0;
  52. for (int i = 0; i < n; i++) if (r[i] + c[i] < r1 + c1)
  53. diff += (r[i] - c[i] > r3 - c3) ? -1 : +1;
  54.  
  55. if (!r1) swap(r1, r3), swap(c1, c3), swap(r2, r4), swap(c2, c4);
  56.  
  57. if (!n)
  58. {
  59. r1 = 2; c1 = 1; r2 = 1; c2 = 2;
  60. r3 = c3 = r4 = c4 = 0;
  61. if (mr > 2 && mc > 2)
  62. {
  63. r1 = 3; c1 = 1; r2 = 1; c2 = 3;
  64. r3 = c3 = 1; r4 = c4 = min(mr, mr);
  65. }
  66. }
  67.  
  68. if (!r1)
  69. {
  70. fout << -1 << "\n" << -1;
  71. return 0;
  72. }
  73. fout << r1 << " " << c1 << " " << r2 << " " << c2 << "\n";
  74.  
  75. if (!r3 || diff)
  76. {
  77. fout << "-1";
  78. return 0;
  79. }
  80. fout << r1 << " " << c1 << " " << r2 << " " << c2 << " ";
  81. fout << r3 << " " << c3 << " " << r4 << " " << c4;
  82.  
  83. return 0;
  84. }
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement