Submission #823573

#TimeUsernameProblemLanguageResultExecution timeMemory
823573oscar1fRectangles (IOI19_rect)C++17
0 / 100
5027 ms95360 KiB
#include<bits/stdc++.h> #include "rect.h" using namespace std; using ll=long long; const ll TAILLE_MAX=2505; ll rep,nbLig,nbCol; ll val[TAILLE_MAX][TAILLE_MAX]; ll limite[TAILLE_MAX][TAILLE_MAX][2]; ll limCalc[TAILLE_MAX][2]; bool checkCol(ll col,ll ligHaut,ll ligBas) { for (ll i=ligHaut;i<=ligBas;i++) { if (val[i][col]>=val[ligHaut-1][col] or val[i][col]>=val[ligBas+1][col]) { return false; } } return true; } void calc(ll ligHaut,ll ligBas,ll colGau,ll colDroi) { //cout<<ligHaut<<" "<<ligBas<<" "<<colGau<<" "<<colDroi<<" : "; for (ll i=colGau-1;i<=colDroi+1;i++) { limCalc[i][0]=0; for (ll j=ligHaut;j<=ligBas;j++) { limCalc[i][0]=max(limCalc[i][0],limite[j][i][0]); } limCalc[i][1]=nbLig-1; for (ll j=ligHaut;j<=ligBas;j++) { limCalc[i][1]=min(limCalc[i][1],limite[j][i][1]); } //cout<<i<<" "<<limCalc[i][0]<<" "<<limCalc[i][1]<<" "; } //cout<<endl; for (ll i=colGau;i<=colDroi;i++) { for (ll j=i;j<=colDroi;j++) { if (limCalc[i-1][1]>=j and limCalc[j+1][0]<=i) { //cout<<"! "<<ligHaut<<" "<<ligBas<<" "<<i<<" "<<j<<endl; rep++; } } } } ll count_rectangles(vector<vector<int>> a) { nbLig=a.size(); nbCol=a[0].size(); if (nbLig<=2 or nbCol<=2) { return 0; } for (ll i=0;i<nbLig;i++) { for (ll j=0;j<nbCol;j++) { val[i][j]=a[i][j]; } } ll deb,pos; for (ll i=0;i<nbLig;i++) { for (ll j=0;j<nbCol;j++) { pos=j; while (pos>0 and val[i][j]>val[i][pos-1]) { pos--; } limite[i][j][0]=pos; pos=j; while (pos<nbCol-1 and val[i][j]>val[i][pos+1]) { pos++; } limite[i][j][1]=pos; //cout<<i<<" "<<j<<" : "<<limite[i][j][0]<<" "<<limite[i][j][1]<<endl; } } for (ll ligHaut=1;ligHaut<nbLig-1;ligHaut++) { for (ll ligBas=ligHaut;ligBas<nbLig-1;ligBas++) { pos=1; while (pos<nbCol-1) { deb=pos; while (pos<nbCol-1 and checkCol(pos,ligHaut,ligBas)) { pos++; } if (pos>deb) { calc(ligHaut,ligBas,deb,pos-1); } pos++; } } } return rep; }
#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...