This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "quality.h"
using namespace std;
set<int> active;
int getmedian(){
int cnt = 0;
int median = -1;
for(int a : active){
if(cnt == active.size() / 2){
median = a;
break;
}
cnt++;
}
return median;
}
int rectangle(int R, int C, int H, int W, int Q[3001][3001]) {
active.clear();
for(int top = 0; top < H; top ++){
for(int left = 0; left < W; left++ ){
active.insert(Q[top][left]);
}
}
int ans = getmedian();
for(int top = 0; top <= R - H; top++){
//cout << top <<":\n";
//if top % 2 === 0, we go from left to right
if(top % 2 == 0){
if(top > 0){
for(int left = 0; left < W; left++ ){
active.erase(Q[top - 1][left]);
active.insert(Q[top + H - 1][left]);
}
ans = min(ans, getmedian());
}
for(int left = 1; left <=C - W;left++){
//iterate left boundary of rectangle
//cout << left << "->";
for(int t = top; t < top + H; t++){
active.erase(Q[t][left - 1]);
active.insert(Q[t][left + W - 1]);
}
ans = min(ans, getmedian());
}
}
else{
if(top > 0){
for(int right = C - 1; right >= C - W; right-- ){
active.erase(Q[top - 1][right]);
active.insert(Q[top + H - 1][right]);
}
ans = min(ans, getmedian());
}
//we go from right to left
for(int right = C - 2; right >=W - 1; right--){
//cout << right <<"->";
//iterate left boundary of rectangle
for(int t = top; t < top + H; t++){
active.erase(Q[t][right + 1]);
active.insert(Q[t][right - W +1]);
}
ans = min(ans, getmedian());
}
}
//cout << endl;
}
return ans;
}
/***********/
Compilation message (stderr)
quality.cpp: In function 'int getmedian()':
quality.cpp:11:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::set<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
11 | if(cnt == active.size() / 2){
| ~~~~^~~~~~~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |