fork download
  1. #include<iostream>
  2. using namespace std;
  3. void printSumTricky(int mat[][500], int k,int m,int n)
  4. {
  5. int stripSum[500][500];
  6. for (int j = 0; j < n; j++)
  7. {
  8. int sum = 0;
  9. for (int i = 0; i < k; i++)
  10. sum += mat[i][j];
  11. stripSum[0][j] = sum;
  12. for (int i = 1; i < m - k + 1; i++)
  13. {
  14. sum += (mat[i + k - 1][j] - mat[i - 1][j]);
  15. stripSum[i][j] = sum;
  16. }
  17. }
  18. for (int i = 0; i < m - k + 1; i++)
  19. {
  20. int sum = 0;
  21. for (int j = 0; j < k; j++)
  22. sum += stripSum[i][j];
  23. cout << sum/(k*k) << " ";
  24. for (int j = 1; j < n - k + 1; j++)
  25. {
  26. sum += (stripSum[i][j + k - 1] - stripSum[i][j - 1]);
  27. cout << sum/(k*k) << " ";
  28. }
  29.  
  30. cout << endl;
  31. }
  32. }
  33. int main() {
  34. int t; cin >> t;
  35. while (t--) {
  36. int m, n, k;
  37. cin >> m >> n >> k;
  38. int M[500][500], N[500][500], X[500][500] = { 0 };
  39. for (int i = 0; i < m; i++) {
  40. for (int j = 0; j < n; j++)
  41. cin >> M[i][j];
  42. }
  43. printSumTricky(M, k, m, n);
  44. }
  45. }
Success #stdin #stdout 0.01s 5272KB
stdin
2

4 4 3

2 1 0 0

3 2 1 1

4 5 2 1

2 2 9 0

3 3 3

1 2 3

4 5 6

7 8 9
stdout
2  1  
3  2  
5