Submission #110831

#TimeUsernameProblemLanguageResultExecution timeMemory
110831hugo_pmBob (COCI14_bob)C++17
72 / 120
152 ms5528 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define form2(i, a, b) for (int i = (a); i < (b); ++i) #define ford2(i, a, b) for (int i = (a-1); i >= (b); --i) #define form(i, n) form2(i, 0, n) #define ford(i, n) ford2(i, n, 0) #define chmax(x, v) x = max(x, (v)) #define chmin(x, v) x = min(x, (v)) #define fi first #define se second const long long BIG = 1000000000000000000LL; typedef long long ll; typedef long double ld; typedef pair<int, int> pii; void solve(); signed main() { ios::sync_with_stdio(false); cin.tie(0); solve(); return 0; } const int borne = 505; int tab[borne][borne]; int rel[borne][borne]; // rel on lig int nbLig, nbCol; void solve() { cin >> nbLig >> nbCol; assert(nbLig <= 500 && nbCol <= 500); form(lig, nbLig) { form(col, nbCol) { cin >> tab[lig][col]; if (col > 0) { rel[lig][col] = rel[lig][col-1]; if (tab[lig][col] != tab[lig][col-1]) ++rel[lig][col]; } } } int rep = 0; form(ligDeb, nbLig) form(colDeb, nbCol) { int sousRep = 0; int colFin = nbCol-1; form2(ligFin, ligDeb, nbLig) { if (tab[ligFin][colDeb] != tab[ligDeb][colDeb]) break; while (colFin >= colDeb && rel[ligFin][colFin] != rel[ligFin][colDeb]) --colFin; if (colFin < colDeb) break; sousRep += (colFin-colDeb+1); } rep += sousRep; } cout << rep << "\n"; }
#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...