Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <set>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <cstdlib>
  6. #include <cstdio>
  7. using namespace std;
  8.  
  9.  
  10. #define ll long long
  11. #define ld long double
  12. #define pb push_back
  13. #define m_p makepair
  14. #define endl '\n'
  15. #define IN "input.txt"
  16. #define OUT "output.txt"
  17. #define INF 1e9+9
  18. #define BIG_INF 1e18 + 9
  19. #define SIZE 1001
  20. #define ff first
  21. #define ss second
  22. /**
  23.  
  24. change SIZE
  25.  
  26. **/
  27.  
  28.  
  29. int n, m, a[SIZE][SIZE];
  30.  
  31.  
  32. int sumG[SIZE];
  33. int sumV[SIZE];
  34. int sumD1[SIZE][SIZE];
  35. int sumD2[SIZE][SIZE];
  36.  
  37.  
  38.  
  39. void precalc()
  40. {
  41. for(int i = 0; i < n; i++)
  42. {
  43. for(int j = 0; j < n; j++)
  44. {
  45. sumG[i] += a[i][j];
  46. }
  47. }
  48.  
  49.  
  50. for(int j = 0; j < n; j++)
  51. {
  52. for(int i = 0; i < n; i++)
  53. {
  54. sumV[j] += a[i][j];
  55. }
  56. }
  57. for(int i = 0; i < n; i++) sumD1[0][0] += a[i][i];
  58.  
  59. for(int j = 1; j < n; j++)
  60. {
  61. int k = 0;
  62.  
  63. while(k < n && k + j < n)
  64. {
  65. sumD1[0][j] += a[k][j + k];
  66. sumD1[j][0] += a[j + k][k];
  67. k++;
  68. }
  69. }
  70.  
  71. for(int j = n - 2; j >= 0; j--)
  72. {
  73. int k = 0;
  74. while(k < n && j - k >= 0)
  75. {
  76.  
  77. sumD2[0][j] += a[k][j - k];
  78. k++;
  79.  
  80. }
  81. }
  82.  
  83.  
  84. for(int i = 0, j = n - 1; i < n, j >= 0; i++, j--)
  85. {
  86. sumD2[0][0] += a[i][j];
  87. }
  88.  
  89. for(int i = n - 1; i >= 1; i--)
  90. {
  91. int k = 0, k2 = 0;
  92. while(i + k < n && n - k2 >= 0)
  93. {
  94. sumD2[i][0] += a[i + k][n - k2 - 1];
  95. k2++;
  96. k++;
  97. }
  98. }
  99. }
  100.  
  101.  
  102.  
  103. void del(int x, int y)
  104. {
  105. sumG[x]--;
  106. sumV[y]--;
  107. int d1 = x - y;
  108.  
  109. if(d1 >= 0)
  110. {
  111. sumD1[d1][0]--;
  112. sumD2[0][d1]--;
  113. }else
  114. {
  115. sumD1[0][abs(d1)]--;
  116. sumD2[abs(d1)][0]--;
  117. }
  118.  
  119.  
  120. return;
  121. }
  122.  
  123. void printSum(int x, int y)
  124. {
  125.  
  126. int d1 = x - y;
  127. int res = 0;
  128. res += sumG[x];
  129. res += sumV[y];
  130.  
  131. if(d1 < 0)
  132.  
  133. return;
  134. }
  135.  
  136.  
  137.  
  138. void HIT(int x, int y)
  139. {
  140. if(a[x][y]){cout << "Hit\n"; del(x, y); }
  141. else printSum(x, y);
  142.  
  143. }
  144.  
  145. int main()
  146. {
  147.  
  148. freopen(IN, "r", stdin);
  149. // freopen(OUT, "w", stdout);
  150.  
  151.  
  152. cin >> n >> m;
  153.  
  154. for(int i = 0; i < n; i++)
  155. for(int j = 0; j < n; j++)
  156. cin >> a[i][j];
  157.  
  158. // for(int i = 0; i < m; i++)
  159. // {
  160. // int x, y;
  161. // cin >> x >> y;
  162. // }
  163.  
  164. precalc();
  165.  
  166. for(int i = 0; i < m; i++)
  167. {
  168. int x, y;
  169. cin >> x >> y;
  170. HIT(x, y);
  171. }
  172.  
  173.  
  174. // cout << 'G' << endl;
  175. // for(int i = 0; i < n; i++)
  176. // {
  177. // cout << i << ' ';
  178. // cout << sumG[i] << '\n';
  179. // }
  180. // cout << endl;
  181. // cout << 'V' << endl;
  182. // for(int i = 0; i < n; i++)
  183. // {
  184. // cout << i << ' ';
  185. // cout << sumV[i] << '\n';
  186. // }
  187. // cout << endl;
  188. //
  189. // cout << "D1" << endl;
  190. //
  191. // for(int i = 0; i < n; i++)
  192. // {
  193. // cout << i << " 0 " << sumD1[i][0] << endl;
  194. // cout << "0 " << i << ' ' << sumD1[0][i] << endl;
  195. // }
  196. // cout << "\nD2\n";
  197. // for(int i = 0; i < n; i++)
  198. // {
  199. // cout << i << " 0 " << sumD2[i][0] << endl;
  200. // cout << "0 " << i << ' ' << sumD2[0][i] << endl;
  201. // }
  202.  
  203.  
  204.  
  205. return 0;
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement