/BCACM11H - Quân hậu

<Problem>

https://www.spoj.com/PTIT/problems/BCACM11H
              #include <iostream>
        using namespace std;
         
        int main() {
            int t;
            
         
            cin >> t;
         
            while (t--) {
                int n, g;
                cin >> n >> g;
         
                long long sum = 0;
                int numOfRows = 0;
                int numOfColumns = 0;
                int numOfMainDiag = 0;
                int numOfAuxiliaryDiag = 0;
                int row[30000 + 1]{ 0 };
                int column[30000 + 1]{ 0 };
                int mainDiag[30000 * 2]{ 0 };
                int auxiliaryDiag[30000 * 2]{ 0 };
         
                for (int i = 1; i <= g; i++) {
                    int k, x, y, s, t;
                    cin >> k >> x >> y >> s >> t;
                    sum = sum + k;
                    for (int j = 0; j <= k - 1; j++) {
                        if (row[x + j * s] == 0) {
                            row[x + j * s] = 1;
                            numOfRows++;
                        }
                        if (column[y + j * t] == 0) {
                            column[y + j * t] = 1;
                            numOfColumns++;
                        }
                        if (mainDiag[(y + j * t) - (x + j * s) + n] == 0) {
                            mainDiag[(y + j * t) - (x + j * s) + n] = 1;
                            numOfMainDiag++;
                        }
                        if (auxiliaryDiag[(n - (y + j * t) + 1) - (x + j * s) + n] == 0) {
                            auxiliaryDiag[(n - (y + j * t) + 1) - (x + j * s) + n] = 1;
                            numOfAuxiliaryDiag++;
                        }
                    }
                }
                sum = sum * 4 - numOfRows - numOfColumns - numOfMainDiag - numOfAuxiliaryDiag;
                cout << sum << endl;
            }
            
            return 0;
        }