Submission #464690

#TimeUsernameProblemLanguageResultExecution timeMemory
464690Hamed5001Strah (COCI18_strah)C++14
55 / 110
1099 ms69856 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; /* dp[i][j] = potential value in range (i, j) -> (N, M); dp[i][j] = dp[i+1][j] + dp[i][j+1] - dp[i+1][j+1] + (sum()) */ const int mxN = 2e3+10; ll N, M; char land[mxN][mxN]; ll cum[mxN][mxN]; ll maxLen(int i, int ii, int j) { int l = j, r = M, mid; while(l < r) { mid = (l + r + 1) >> 1; if ((cum[ii][mid] + cum[i-1][j-1] - cum[ii][j-1] - cum[i-1][mid]) == 0) l = mid; else r = mid - 1; } return l - j + 1; } ll calc(int i, int j) { ll ret = 0; if (land[i][j] == '#') return ret; for (ll ii = i; ii <= N && land[ii][j] != '#'; ii++) { ll len = maxLen(i, ii, j); ret += (len*(len+1)/2) * (ii-i+1); } return ret; } void solve() { cin >> N >> M; for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { cin >> land[i][j]; cum[i][j] = ((land[i][j] == '#') + cum[i-1][j] + cum[i][j-1] - cum[i-1][j-1]); } } vector<vector<ll>> dp(mxN, vector<ll>(mxN, 0)); dp[N][M] = (land[N][M] != '#'); for (int i = N; i; i--) { for (int j = M; j; j--) { dp[i][j] = dp[i+1][j] + dp[i][j+1] - dp[i+1][j+1] + calc(i, j); } } // for (int i = 1; i <= N; i++) { // for (int j = 1; j <= M; j++) { // cout << dp[i][j] << " \n"[j == M]; // } // } cout << dp[1][1]; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); solve(); }
#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...