#include #include using namespace std; int n,mas[1024][1024],diag1[1024][1024],diag2[1024][1024]; void print(int a[1024][1024]); void d1() { for(int k=1; k<=n; k++) { for(int i=k; i<=n; i++) { int j=(i-k)+1; diag1[i][j]=diag1[i-1][j-1]+mas[i][j]; } int sum=diag1[n][n-k+1]; for(int i=k; i<=n; i++) { int j=(i-k)+1; diag1[i][j]=sum; } } for(int k=2; k<=n; k++) { for(int j=k; j<=n; j++) { int i=(j-k)+1; diag1[i][j]=diag1[i-1][j-1]+=mas[i][j]; } int sum=diag1[n-k+1][n]; for(int j=k; j<=n; j++) { int i=(j-k)+1; diag1[i][j]=sum; } } // print(diag1); } void d2() { for(int k=1; k<=n; k++) { int sum; for(int i=k; i>=1; i--) { int j=(k-i)+1; diag2[i][j]=diag2[i+1][j-1]+mas[i][j]; sum=diag2[i][j]; } //int sum=diag2[n][n-k+1]; for(int i=k; i>=1; i--) { int j=(k-i)+1; diag2[i][j]=sum; } } for(int k=2; k<=n; k++) { int sum=0; for(int i=k,j=n; i<=n; i++,j--) { diag2[i][j]=diag2[i-1][j+1]+mas[i][j]; sum=max(diag2[i][j],sum); } //print(diag2); // int sum=diag2[n][n-k+1]; for(int i=k,j=n; i<=n; i++,j--) { diag2[i][j]=sum; } } //print(diag2); } int main() { freopen("diagonalsum.in","r",stdin); freopen("diagonalsum.out","w",stdout); cin>>n; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { cin>>mas[i][j]; } } d1(); d2(); cin>>n; for(int i=1;i<=n;i++) { int x,y; cin>>x>>y; cout<