Submission #1171579

#TimeUsernameProblemLanguageResultExecution timeMemory
1171579NomioBob (COCI14_bob)C++20
120 / 120
70 ms8260 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; int a[n][m]; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cin >> a[i][j]; } } int b[n][m] {}; for(int j = 0; j < m; j++) { b[0][j] = 1; int cnt = 1; for(int i = 1; i < n; i++) { if(a[i][j] == a[i - 1][j]) cnt++; else cnt = 1; b[i][j] = cnt; } } ll ans = 0, s = 0; vector<pair<int, int>> v; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { int cnt = 1; if(j == 0 || a[i][j] != a[i][j - 1]) { v.clear(); s = 0; } while(!v.empty() && v.back().first >= b[i][j]) { cnt += v.back().second; s -= 1LL * (v.back().first * v.back().second); v.pop_back(); } s += b[i][j] * cnt; v.push_back({b[i][j], cnt}); ans += s; } } cout << ans << '\n'; 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...