Advertisement
Guest User

iancupopp

a guest
Sep 17th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. ifstream in ("betasah.in");
  8. ofstream out ("betasah.out");
  9.  
  10. void completare_dame_stg (int tabla [500000], int contor) {
  11. int dif1 = round (sqrt (contor * 2));
  12. int dif2 = dif1 - 1;
  13. int aux1 = dif1 * (dif1 - 1) / 2 + 1;
  14. int aux2 = dif1 * (dif1 + 1) / 2;
  15. int aux3 = dif1;
  16. int aux4 = dif1;
  17. bool ok_stg_sus = 1, ok_stg = 1, ok_stg_jos = 1;
  18. //stanga
  19. do {
  20. contor --;
  21. if (ok_stg_sus) {
  22. if (tabla [contor - dif2] != 1 && tabla [contor - dif2] != 2 && contor - dif2 > 0) {
  23. if (tabla [contor - dif2] != 3) {
  24. tabla [contor - dif2] = 3;
  25. }
  26. aux3 --;
  27. dif2 += aux3;
  28. if (round (sqrt ((contor - dif2) * 2)) == round (sqrt ((contor - dif2 + aux3)*2))) {
  29. ok_stg_sus = 0;
  30. }
  31. }
  32. else {
  33. ok_stg_sus = 0;
  34. }
  35. }
  36. if (ok_stg_jos) {
  37. if (tabla [contor + dif1] != 1 && tabla [contor + dif1] != 2 && contor + dif1 <= aux2) {
  38. if (tabla [contor + dif1] != 3) {
  39. tabla [contor + dif1] = 3;
  40. }
  41. aux4 ++;
  42. dif1 += aux4;
  43. }
  44. else {
  45. ok_stg_jos = 0;
  46. }
  47. }
  48. if (ok_stg) {
  49. if (tabla [contor] != 1 && tabla [contor] != 2) {
  50. if (tabla [contor] != 3) {
  51. tabla [contor] = 3;
  52. }
  53. }
  54. else {
  55. ok_stg = 0;
  56. }
  57. }
  58.  
  59. }
  60. while (contor > aux1);
  61. }
  62. void completare_dame_dr (int tabla [500000], int contor) {
  63. int dif1 = round (sqrt (contor * 2));
  64. int dif2 = dif1 - 1;
  65. int aux1 = dif1 * (dif1 - 1) / 2 + 1;
  66. int aux2 = dif1 * (dif1 + 1) / 2;
  67. int aux3 = dif1;
  68. int aux4 = dif1;
  69. bool ok_dr_sus = 1, ok_dr = 1, ok_dr_jos = 1;
  70. //dreapta
  71. do {
  72. contor ++;
  73. if (ok_dr_sus) {
  74. if (tabla [contor - dif2] != 1 && tabla [contor - dif2] != 2 && contor - dif2 > 0) {
  75. if (tabla [contor - dif2] != 3) {
  76. tabla [contor - dif2] = 3;
  77. }
  78. aux3 --;
  79. dif2 += aux3;
  80. if (round (sqrt ((contor - dif2) * 2)) == round (sqrt ((contor - dif2 + aux3)*2))) {
  81. ok_dr_sus = 0;
  82. }
  83. }
  84. else {
  85. ok_dr_sus = 0;
  86. }
  87. }
  88. if (ok_dr_jos) {
  89. if (tabla [contor + dif1] != 1 && tabla [contor + dif1] != 2 && contor + dif1 <= aux2) {
  90. if (tabla [contor + dif1] != 3) {
  91. tabla [contor + dif1] = 3;
  92. }
  93. aux4 ++;
  94. dif1 += aux4;
  95. }
  96. else {
  97. ok_dr_jos = 0;
  98. }
  99. }
  100. if (ok_dr) {
  101. if (tabla [contor] != 1 && tabla [contor] != 2) {
  102. if (tabla [contor] != 3) {
  103. tabla [contor] = 3;
  104. }
  105. }
  106. else {
  107. ok_dr = 0;
  108. }
  109. }
  110.  
  111. }
  112. while (contor > aux1);
  113. }
  114. void completare dame_sj
  115. int main() {
  116. int n, d, k, contor, x, y;
  117. in >> n >> d >> k;
  118. int tabla [n * (n + 1) / 2];
  119. //dame
  120. for (contor = 0; contor < d; contor ++) {
  121. in >> x >> y;
  122. tabla [x * (x + 1) / 2 + y] = 1;
  123. }
  124. //patrate negre
  125. for (contor = 0; contor < k; contor ++) {
  126. in >> x >> y;
  127. tabla [x * (x + 1) / 2 + y] = 2;
  128. }
  129. //parcurgere vector
  130. for (contor = 0; contor < n * (n + 1) / 2; contor ++) {
  131. if (tabla [contor] == 1) {
  132. completare_dame (tabla, contor);
  133. }
  134. }
  135. return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement