| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1347936 | tedaka | 삶의 질 (IOI10_quality) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define endl '\n'
using namespace std;
using namespace __gnu_pbds;
template<class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
void speed()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
const int maxn=3100;
int a[maxn][maxn];
int main()
{
speed();
ordered_set<int> s;
int n,m,h,w;
cin>>n>>m>>h>>w;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
int minc=1e9;
for(int i=h;i<=n;i++)
{
ordered_set<int> s;
for(int i1=i;i1>=i-h+1;i1--)
{
for(int j1=1;j1<=w;j1++) s.insert(a[i1][j1]);
}
minc=min(minc,*s.find_by_order(s.size()/2));
for(int j=w+1;j<=m;j++)
{
for(int i1=i;i1>=i-h;i1--)
{
s.insert(a[i1][j]);
s.erase(a[i1][j-w]);
}
minc=min(minc,*s.find_by_order(s.size()/2));
}
}
cout<<minc<<endl;
return 0;
}
