# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
287634 | 2020-08-31T21:41:11 Z | fgojko | Quality Of Living (IOI10_quality) | C++14 | 0 ms | 0 KB |
#include <iostream> #include <vector> #include <algorithm> //#define FEEDBACK using namespace std; typedef unsigned long long ull; int binaryFunction(vector<ull>& vec, ull value); int main() { ios_base::sync_with_stdio(false); int n, m, x, y; cin >> n >> m >> x >> y; vector<vector<ull> > mat(n, vector<ull>(m)); for(int i = 0; i < n; ++i){ for(int j = 0; j < m; ++j){ cin >> mat[i][j]; } } vector<ull> vec; ull max = n*m; for(int i = 0; i <= n-x; ++i){ for(int j = 0; j <= m-y; ++j){ vec.resize(0); for(int a = i; a < i+x; ++a){ for(int b =j; b < j+y; ++b){ vec.push_back(mat[a][b]); } } sort(vec.begin(), vec.end()); #ifdef FEEDBACK cout << "( " << i << ", " << j << " )\n"; cout << "median = " << vec[vec.size()/2] << endl; #endif // FEEDBACK if(max > vec[vec.size()/2]){ max = vec[vec.size()/2]; } } } cout << max << endl; return 0; } int binaryFunction(vector<ull> vec, ull value){ int beg = 0; int end = vec.size(); int mid; while(beg < end-1){ mid = (beg + end)/2; if(vec[mid] == value){ return mid; } if(vec[mid] < value){ beg = mid; } else{ end = mid; } } return beg; }