#include <bits/stdc++.h>
#include "quality.h"
#define MAX 11000000
typedef std::pair<int,int> pii;
#define MINM 3005
pii vals[MAX];
int matriz[MINM][MINM]={};
int getval(int x,int y){
if(x<0||y<0)return 0;
return matriz[x][y];
}
int getrectangle(int x1,int y1,int x2,int y2){
return getval(x2,y2) + getval(x1-1,y1-1) - getval(x2,y1-1) - getval(x1-1,y2);
}
bool tentar(int p,int N,int M,int H,int W){
memset(matriz,0,sizeof(matriz));
// std::cout<<"Processando "<<p<<"\n";
for(int i=0;i!=p;++i){
auto z = vals[i];
// std::cout<<"Add "<<z.first<<" "<<z.second<<"\n";
matriz[z.first][z.second]++;
}
for(int i=0;i!=MINM-3;++i){
int s=0;
for(int j=0;j!=MINM-3;++j){
s+=matriz[i][j];
matriz[i][j]=s;
if(i)
matriz[i][j]+=matriz[i-1][j];
}
}
int precisa = (H*W)/2;
/* for(int i=0;i!=N;++i){
for(int j=0;j!=M;++j)
std::cout<<matriz[i][j]<<" ";
std::cout<<"\n";
}
std::cout<<"\n";*/
for(int i=0;i!=N;++i){
for(int j=0;j!=M;++j){
int x2=i+H-1,y2=j+W-1;
if(x2>=N||y2>=M)continue;
int x = getrectangle(i,j,x2,y2);
if(x>precisa)return true;
}
}
return false;
}
int rectangle(int R, int C, int H, int W, int Q[3001][3001]) {
for(int i=0;i!=R;++i){
for(int j=0;j!=C;++j){
vals[Q[i][j]-1]={i,j};
}
}
int la=0,ra=R*C;
while(la<ra){
int m = (la+ra)/2;
if(tentar(m,R,C,H,W)){
ra=m;
}else la=m+1;
}
return la;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
122 ms |
35768 KB |
Output is correct |
2 |
Correct |
131 ms |
35760 KB |
Output is correct |
3 |
Correct |
116 ms |
35668 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
122 ms |
35768 KB |
Output is correct |
2 |
Correct |
131 ms |
35760 KB |
Output is correct |
3 |
Correct |
116 ms |
35668 KB |
Output is correct |
4 |
Correct |
169 ms |
36200 KB |
Output is correct |
5 |
Correct |
167 ms |
36192 KB |
Output is correct |
6 |
Correct |
172 ms |
36140 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
122 ms |
35768 KB |
Output is correct |
2 |
Correct |
131 ms |
35760 KB |
Output is correct |
3 |
Correct |
116 ms |
35668 KB |
Output is correct |
4 |
Correct |
169 ms |
36200 KB |
Output is correct |
5 |
Correct |
167 ms |
36192 KB |
Output is correct |
6 |
Correct |
172 ms |
36140 KB |
Output is correct |
7 |
Correct |
220 ms |
38420 KB |
Output is correct |
8 |
Correct |
223 ms |
38424 KB |
Output is correct |
9 |
Correct |
209 ms |
38268 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
122 ms |
35768 KB |
Output is correct |
2 |
Correct |
131 ms |
35760 KB |
Output is correct |
3 |
Correct |
116 ms |
35668 KB |
Output is correct |
4 |
Correct |
169 ms |
36200 KB |
Output is correct |
5 |
Correct |
167 ms |
36192 KB |
Output is correct |
6 |
Correct |
172 ms |
36140 KB |
Output is correct |
7 |
Correct |
220 ms |
38420 KB |
Output is correct |
8 |
Correct |
223 ms |
38424 KB |
Output is correct |
9 |
Correct |
209 ms |
38268 KB |
Output is correct |
10 |
Correct |
438 ms |
58172 KB |
Output is correct |
11 |
Correct |
445 ms |
58060 KB |
Output is correct |
12 |
Correct |
338 ms |
48832 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
122 ms |
35768 KB |
Output is correct |
2 |
Correct |
131 ms |
35760 KB |
Output is correct |
3 |
Correct |
116 ms |
35668 KB |
Output is correct |
4 |
Correct |
169 ms |
36200 KB |
Output is correct |
5 |
Correct |
167 ms |
36192 KB |
Output is correct |
6 |
Correct |
172 ms |
36140 KB |
Output is correct |
7 |
Correct |
220 ms |
38420 KB |
Output is correct |
8 |
Correct |
223 ms |
38424 KB |
Output is correct |
9 |
Correct |
209 ms |
38268 KB |
Output is correct |
10 |
Correct |
438 ms |
58172 KB |
Output is correct |
11 |
Correct |
445 ms |
58060 KB |
Output is correct |
12 |
Correct |
338 ms |
48832 KB |
Output is correct |
13 |
Correct |
2870 ms |
210688 KB |
Output is correct |
14 |
Correct |
2719 ms |
210724 KB |
Output is correct |
15 |
Correct |
2557 ms |
196268 KB |
Output is correct |