Run Time: 0.120
Ranking (as of 2016-06-07): 13 out of 457
Language: C++
/* UVa 983 - Localized Summing for Blurring To build using Visual Studio 2012: cl -EHsc -O2 UVa_983_Localized_Summing_for_Blurring.cpp See also UVa 11951 - Area. */ #include <cstdio> const int N_max = 1000; int sm[N_max][N_max]; // sm[x][y] is the sum of matrix[i][j] for 0 <= i <= x and 0 <= j <= y int sum(int xt, int yl, int xb, int yr) { if (xt && yl) return sm[xb][yr] - sm[xt - 1][yr] - sm[xb][yl - 1] + sm[xt - 1][yl - 1]; else if (xt) return sm[xb][yr] - sm[xt - 1][yr]; else if (yl) return sm[xb][yr] - sm[xb][yl - 1]; else return sm[xb][yr]; } int main() { bool printed = false; int N, M; while (scanf("%d %d", &N, &M) != EOF) { if (printed) putchar('\n'); else printed = true; for (int i = 0; i < N; i++) for (int j = 0, s = 0; j < N; j++) { int k; scanf("%d", &k); s += k; sm[i][j] = s; if (i) sm[i][j] += sm[i - 1][j]; } long long s = 0; for (int xt = 0; xt < N - M + 1; xt++) for (int yl = 0; yl < N - M + 1; yl++) { int k = sum(xt, yl, xt + M - 1, yl + M - 1); printf("%d\n", k); s += k; } printf("%lld\n", s); } return 0; }
No comments:
Post a Comment