Submission #441784

#TimeUsernameProblemLanguageResultExecution timeMemory
441784peijarRectangles (IOI19_rect)C++17
13 / 100
408 ms354820 KiB
#include "rect.h" #include <algorithm> #include <bits/stdc++.h> #define int long long using namespace std; bool seen[2500][2500]; int DX[] = {-1, 1, 0, 0}; int DY[] = {0, 0, -1, 1}; int nbLig, nbCol; int maxLig, minLig, minCol, maxCol, nbVus; vector<vector<signed>> val; void dfs(int iLig, int iCol) { if (nbLig <= iLig or iLig < 0 or iCol < 0 or iCol >= nbCol or seen[iLig][iCol] or val[iLig][iCol]) return; nbVus++; maxLig = max(maxLig, iLig); minLig = min(minLig, iLig); minCol = min(minCol, iCol); maxCol = max(maxCol, iCol); seen[iLig][iCol] = true; for (int d = 0; d < 4; ++d) { int col = iCol + DX[d]; int lig = iLig + DY[d]; dfs(lig, col); } } int count_rectangles(vector<vector<signed>> a) { val = a; vector<int> vals; nbLig = a.size(), nbCol = a[0].size(); int ret = 0; for (int iLig = 0; iLig < nbLig; ++iLig) for (int iCol = 0; iCol < nbCol; ++iCol) if (!seen[iLig][iCol] and !val[iLig][iCol]) { minLig = maxLig = iLig; minCol = maxCol = iCol; nbVus = 0; dfs(iLig, iCol); ret += nbVus == (maxLig - minLig + 1) * (maxCol - minCol + 1) and maxLig < nbLig - 1 and minLig > 0 and minCol > 0 and maxCol < nbCol - 1; ; } return ret; }
#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...