#include #include #include #include #include #include #include #include using namespace std; ifstream in("diagonalsum.in"); ofstream out("diagonalsum.out"); int matrix[1024][1024]; int n, q, x, yv; bool isOk(int x, int yv){ if (x < 0 || yv < 0){ return false; } if (x >= n || yv >= n){ return false; } return true; } int getDiagSum(int x, int yv){ int y1; int sum = matrix[x][yv]; y1 = yv; for (int x1 = x - 1; x1 >= 0; x1--){ y1--; if (!isOk(x1, y1)){ break; } sum += matrix[x1][y1]; } y1 = yv; for (int x1 = x - 1; x1 >= 0; x1--){ y1++; if (!isOk(x1, y1)){ break; } sum += matrix[x1][y1]; } y1 = yv; for (int x1 = x + 1; x1 < n; x1++){ y1++; if (!isOk(x1, y1)){ break; } sum += matrix[x1][y1]; } y1 = yv; for (int x1 = x + 1; x1 < n; x1++){ y1--; if (!isOk(x1, y1)){ break; } sum += matrix[x1][y1]; } return sum; } int main(){ in >> n; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ in >> matrix[i][j]; } } in >> q; for (int ind = 0; ind < q; ind++){ in >> x >> yv; out << getDiagSum(x-1, yv-1) << endl; } }