Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <set>
- #include <algorithm>
- #include <vector>
- #include <cstdlib>
- #include <cstdio>
- using namespace std;
- #define ll long long
- #define ld long double
- #define pb push_back
- #define m_p makepair
- #define endl '\n'
- #define IN "input.txt"
- #define OUT "output.txt"
- #define INF 1e9+9
- #define BIG_INF 1e18 + 9
- #define SIZE 1001
- #define ff first
- #define ss second
- /**
- change SIZE
- **/
- int n, m, a[SIZE][SIZE];
- int sumG[SIZE];
- int sumV[SIZE];
- int sumD1[SIZE][SIZE];
- int sumD2[SIZE][SIZE];
- void precalc()
- {
- for(int i = 0; i < n; i++)
- {
- for(int j = 0; j < n; j++)
- {
- sumG[i] += a[i][j];
- }
- }
- for(int j = 0; j < n; j++)
- {
- for(int i = 0; i < n; i++)
- {
- sumV[j] += a[i][j];
- }
- }
- for(int i = 0; i < n; i++) sumD1[0][0] += a[i][i];
- for(int j = 1; j < n; j++)
- {
- int k = 0;
- while(k < n && k + j < n)
- {
- sumD1[0][j] += a[k][j + k];
- sumD1[j][0] += a[j + k][k];
- k++;
- }
- }
- for(int j = n - 2; j >= 0; j--)
- {
- int k = 0;
- while(k < n && j - k >= 0)
- {
- sumD2[0][j] += a[k][j - k];
- k++;
- }
- }
- for(int i = 0, j = n - 1; i < n, j >= 0; i++, j--)
- {
- sumD2[0][0] += a[i][j];
- }
- for(int i = n - 1; i >= 1; i--)
- {
- int k = 0, k2 = 0;
- while(i + k < n && n - k2 >= 0)
- {
- sumD2[i][0] += a[i + k][n - k2 - 1];
- k2++;
- k++;
- }
- }
- }
- void del(int x, int y)
- {
- sumG[x]--;
- sumV[y]--;
- int d1 = x - y;
- if(d1 >= 0)
- {
- sumD1[d1][0]--;
- sumD2[0][d1]--;
- }else
- {
- sumD1[0][abs(d1)]--;
- sumD2[abs(d1)][0]--;
- }
- return;
- }
- void printSum(int x, int y)
- {
- int d1 = x - y;
- int res = 0;
- res += sumG[x];
- res += sumV[y];
- if(d1 < 0)
- return;
- }
- void HIT(int x, int y)
- {
- if(a[x][y]){cout << "Hit\n"; del(x, y); }
- else printSum(x, y);
- }
- int main()
- {
- freopen(IN, "r", stdin);
- // freopen(OUT, "w", stdout);
- cin >> n >> m;
- for(int i = 0; i < n; i++)
- for(int j = 0; j < n; j++)
- cin >> a[i][j];
- // for(int i = 0; i < m; i++)
- // {
- // int x, y;
- // cin >> x >> y;
- // }
- precalc();
- for(int i = 0; i < m; i++)
- {
- int x, y;
- cin >> x >> y;
- HIT(x, y);
- }
- // cout << 'G' << endl;
- // for(int i = 0; i < n; i++)
- // {
- // cout << i << ' ';
- // cout << sumG[i] << '\n';
- // }
- // cout << endl;
- // cout << 'V' << endl;
- // for(int i = 0; i < n; i++)
- // {
- // cout << i << ' ';
- // cout << sumV[i] << '\n';
- // }
- // cout << endl;
- //
- // cout << "D1" << endl;
- //
- // for(int i = 0; i < n; i++)
- // {
- // cout << i << " 0 " << sumD1[i][0] << endl;
- // cout << "0 " << i << ' ' << sumD1[0][i] << endl;
- // }
- // cout << "\nD2\n";
- // for(int i = 0; i < n; i++)
- // {
- // cout << i << " 0 " << sumD2[i][0] << endl;
- // cout << "0 " << i << ' ' << sumD2[0][i] << endl;
- // }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement