Submission #228184

#TimeUsernameProblemLanguageResultExecution timeMemory
228184VEGAnnStrah (COCI18_strah)C++14
55 / 110
899 ms12672 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1010; char c[N][N]; int pf[N][N], n, m; ll ans = 0; int sum(int x1, int y1, int x2, int y2){ return pf[x2][y2] - pf[x1 - 1][y2] - pf[x2][y1 - 1] + pf[x1 - 1][y1 - 1]; } ll arith(ll x){ return x * (x + 1ll) / 2ll; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++){ cin >> c[i][j]; pf[i][j] = pf[i - 1][j] + pf[i][j - 1] - pf[i - 1][j - 1] + bool(c[i][j] == '#'); } for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++){ if (c[i][j] == '#') continue; int len = 1; while (i + len <= n && c[i + len][j] != '#') len++; int ptr = j; for (int up = len; up > 0; up--){ while (ptr + 1 <= m && sum(i, j, i + up - 1, ptr + 1) == 0) ptr++; ans += arith(ptr - j + 1) * ll(up); } } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...