이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#include "grader.h"
struct SegTree{
int tmp=1, target, MAXN;
vector<int> tree;
void init(int a, int b){
target = a; MAXN=b;
while(tmp<=MAXN) tmp*=2;
tree.resize(2*tmp);
}
void update(int p, int d){
tree[p+tmp]+=d;
p=(p+tmp)/2;
while(p){
tree[p]=tree[p*2]+tree[p*2+1];
p/=2;
}
}
int query(){ return query(1,0,tmp-1,0);}
int query(int i, int l, int r, int sl){
if(l==r) return i-tmp;
int m = (l+r)/2;
if(sl+tree[i*2]>target)return query(i*2,l,m,sl);
else return query(i*2+1,m+1,r,sl+tree[i*2]);
}
};
SegTree st;
void addcolumn(vector<vector<int>> &q,int c, int sq, int eq){
for(int i=sq;i<eq;i++) st.update(q[i][c],1);
}
void removecolumn(vector<vector<int>> &q,int c, int sq, int eq){
for(int i=sq;i<eq;i++) st.update(q[i][c],-1);
}
void addrow(vector<vector<int>> &q,int r, int sq, int eq){
for(int i=sq;i<eq;i++) st.update(q[r][i],1);
}
void removerow(vector<vector<int>> &q,int r, int sq, int eq){
for(int i=sq;i<eq;i++) st.update(q[r][i],-1);
}
int rectangle(int R, int C, int H, int W, int Q[3001][3001]) {
vector<vector<int>> q(R,vector<int>(C)); st.init((H*W)/2, 5000);
for(int i=0;i<R;i++)
for(int j=0;j<C;j++){
q[i][j]=Q[i][j];
if(i<H && j<W)
st.update(q[i][j],1);
}
int ans = INT_MAX;
for(int i=0;i<=R-H;i++){
if(!(i%2)){
for(int j=1;j<=C-W;j++){
ans = min(ans, st.query());
removecolumn(q,j-1,i,i+H);
addcolumn(q,j+W-1,i,i+H);
}
ans = min(ans, st.query());
removerow(q,i,C-W,C);
if(i+H<R)addrow(q,i+H,C-W,C);
}else{
for(int j=C-W-1;j>=0;j--){
ans = min(ans, st.query());
removecolumn(q,j+W,i,i+H);
addcolumn(q,j,i,i+H);
}
ans = min(ans, st.query());
removerow(q,i,0,W);
if(i+H<R) addrow(q,i+H,0,W);
}
}
return ans;
}
# | 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... |