Submission #49739

#TimeUsernameProblemLanguageResultExecution timeMemory
49739IvanCBob (COCI14_bob)C++17
120 / 120
737 ms64372 KiB
#include <bits/stdc++.h> #define gc getchar_unlocked void getint(int &x){ int c = gc(); x = 0; for(;(c<48 || c>57);c = gc()); for(;c>47 && c<58;c = gc()) {x = (x<<1) + (x<<3) + c - 48;} } using namespace std; typedef long long ll; const int MAXN = 1e3 + 10; int matriz[MAXN][MAXN],vaiate[MAXN][MAXN],n,m; ll resp; int main(){ getint(n);getint(m); for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ getint(matriz[i][j]); } } for(int coluna = 1;coluna <= m;coluna++){ vaiate[n][coluna] = 1; for(int linha = n - 1;linha >= 1;linha--){ if(matriz[linha][coluna] == matriz[linha+1][coluna]) vaiate[linha][coluna] = 1 + vaiate[linha+1][coluna]; else vaiate[linha][coluna] = 1; } } for(int i = 1;i<=n;i++){ for(int j = 1;j <= m;j++){ int minimo = vaiate[i][j]; for(int k = j;k <= m;k++){ if(matriz[i][k] != matriz[i][j]) break; minimo = min(minimo,vaiate[i][k]); resp += 1LL*minimo; } } } printf("%lld\n",resp); 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...