fork download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. #define FOR(i, a, b) for(int i = a; i <= b; i++)
  4. #define file(name) if (freopen(name".inp", "r", stdin)){ freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
  5. #define fi first
  6. #define se second
  7.  
  8. using namespace std;
  9. typedef long long ll;
  10. typedef pair<int, int> ii;
  11. const int N = 1010;
  12. int n, m, k;
  13. int a[N][N];
  14. ll F[N][N], res;
  15.  
  16. bool Check(int i, int j){
  17. if (i >= 1 && j >= 1 && i <= n && j <= m) return 1;
  18. return 0;
  19. }
  20.  
  21. ll Tinh(int hB, int cB, int hE, int cE){
  22. return F[hE][cE] - F[hB-1][cE] - F[hE][cB-1] + F[hB-1][cB-1];
  23. }
  24.  
  25. ll Xl(int hB, int cB, int hE, int cE){
  26. ll ans = 0;
  27. int C = cB-1;
  28. FOR(i, hB, hE){
  29. C++;
  30. ans += Tinh(i, cB, i, C);
  31. }
  32. return ans;
  33. }
  34.  
  35. void Solve(){
  36. FOR(i, 1, n)
  37. FOR(j, 1, m)
  38. if (Check(i+k-1, j+k-1)) res = max(res, Xl(i, j, i+k-1, j+k-1));
  39. cout<<res;
  40. }
  41.  
  42. signed main()
  43. {
  44. ios_base::sync_with_stdio(false);
  45. cin.tie(NULL); cout.tie(NULL);
  46. file("TRIANGLE");
  47. cin>>n>>m>>k;
  48. FOR(i, 1, n)
  49. FOR(j, 1, m){
  50. cin>>a[i][j];
  51. F[i][j] = F[i-1][j] + F[i][j-1] - F[i-1][j-1] + a[i][j];
  52. }
  53. Solve();
  54. return (0);
  55. }
  56.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty