Submission #1115123

#TimeUsernameProblemLanguageResultExecution timeMemory
1115123duytuandao21Bob (COCI14_bob)C++17
120 / 120
940 ms55900 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 2e5 + 7; const int inf = 1e9 + 7; typedef pair<int, int> pii; int n, m; int a[2000][2000], b[2000][2000], c[2000][2000]; int bit[2000][2000]; int get(int j, int x, int y) { int ans = 0; int mVal = inf; for (int i = x; i <= y; i++) { mVal = min(mVal, b[i][j]); ans += mVal; } return ans + (-j + 1) * (y - x + 1); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> a[i][j]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { for (int k = j; k <= m + 1; k++) { if (a[i][k] != a[i][j]) { b[i][j] = k - 1; break; } } } } for (int j = 1; j <= m; j++) { for (int i = 1; i <= n; i++) { for (int k = i; k <= n + 1; k++) { if (a[k][j] != a[i][j]) { c[i][j] = k - 1; break; } } } } int res = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { // int minCol = inf; // for (int k = i; k <= n; k++) { // if (a[k][j] != a[i][j]) break; // minCol = min(minCol, b[k][j]); // res += minCol - j + 1; // } res += get(j, i, c[i][j]); } } cout << res; }
#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...