SHARE
TWEET

Untitled

a guest Oct 21st, 2019 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top