Advertisement
Zeinab_Hamdy

Untitled

Oct 17th, 2023 (edited)
1,082
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.71 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define nl "\n"
  4. #define fi first
  5. #define se second
  6. #define pb push_back
  7. #define ll long long
  8. #define ull unsigned ll
  9. #define RV  return void
  10. // #define inf 2000000000
  11. #define sz(x) int(x.size())
  12. #define all(v) v.begin(), v.end()
  13. #define rall(v) v.rbegin(), v.rend()
  14. #define Mini(x) *min_element(all(x))
  15. #define Maxi(x) *max_element(all(x))
  16. #define fixed(n) fixed << setprecision(n)
  17. #define ceil(w, m) (((w) / (m)) + ((w) % (m) ? 1 : 0))
  18. #define cin(v) for (auto&i:v) cin >> i;
  19. #define cout(v) for (auto&i:v) cout << i << " ";
  20. #define clr(memo, x) memset(memo, x, sizeof memo)
  21. #define updmin(a, b) a = min(a, b)
  22. #define updmax(a, b) a = max(a, b)
  23. #define vi vector < int >
  24. #define vl vector < ll >
  25. #define vc vector < char >
  26. #define vs vector < string >
  27. #define v2i vector < vector < int > >
  28. #define v2l vector < vector < int > >
  29. #define seti set < int >
  30. #define setl set < ll >
  31. #define mapii map < int , int >
  32. #define mapll map < ll , ll >
  33. #define mapli map < ll , int >
  34. #define mapci map < char , int >
  35. #define mapsi map < string , int >
  36. #define pll pair < ll , ll >
  37. #define pii pair < int , int >
  38. #define range(l,r,x) for(int i=l ; i < r ; i+=x)
  39. #define FastCode ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  40. vector < string > ternary= {"NO\n" , "YES\n"};
  41.  
  42. void  Zainab(){
  43.             #ifndef ONLINE_JUDGE
  44.               freopen("input.txt", "r", stdin);
  45.               freopen("output.txt", "w", stdout);
  46.             #endif
  47. }
  48.  
  49.  
  50. /*================================  solution  ================================ */
  51.  
  52.  
  53.  
  54. void myCode(){
  55.  
  56.  
  57.     int n , m , h , w;
  58.     cin >> n >> m >> h >> w;
  59.     vector < vector < int > > a(n , vector < int > (m , 0));
  60.     for(int i =0 ; i <n ; i++){
  61.         for(int j =0 ; j < m ; j++){
  62.             cin >> a[i][j];
  63.         }
  64.     }
  65.  
  66.  
  67.     auto good =[&](ll x ){
  68.         vector < vector < int > > arr(n , vector < int > (m , 0));
  69.         for(int i =0 ; i < n ; i++){
  70.             for(int j =0 ; j < m ; j++){
  71.                 if( a[i][j] >=x ) arr[i][j] = 1;
  72.                 else arr[i][j] = -1;
  73.             }
  74.         }
  75.         vector < vector < ll > > pref(n+1 , vector < ll > (m+1 , 0));
  76.        
  77.         //  prefix sum 2d
  78.         for(int i =1 ; i <= n ; i++){
  79.             for(int j =1 ; j <= m ; j++){
  80.                 pref[i][j] =  pref[i][j-1] + arr[i-1][j-1];
  81.             }
  82.         }
  83.  
  84.         for(int j =1 ; j <= m ; j++){
  85.             for(int i =1 ; i <= n ; i++){
  86.                 pref[i][j] += pref[i-1][j];
  87.             }
  88.         }
  89.  
  90.         // for(auto& pr: pref){
  91.         //     cout(pr);
  92.         //     cout << nl;
  93.         // }
  94.  
  95.         for(int i =0 ; i + h < n ; i++){
  96.             for(int j =0 ; j + w < m ; j++){
  97.                 // cout << i << " " << j << nl;
  98.                 // cout << pref[i+h][j+w] << " " << pref[i][j+w] << " " << pref[i+h][j] << " " << pref[i][j] << nl;
  99.                ll sum = pref[i+h][j+w] - pref[i][j+w] - pref[i+h][j] + pref[i][j];
  100.                if(sum > 0) return true;
  101.             }
  102.         }
  103.  
  104.         return false;
  105.     };
  106.  
  107.  
  108.  
  109.  
  110.     ll ans =1e6,  l =1 , r = 1e6;
  111.     while(l <= r ){
  112.         ll mid = r-(r-l)/2;
  113.  
  114.         if(good(mid)){
  115.             ans = mid;
  116.             cout << mid << nl;
  117.              l=mid+1;
  118.         }
  119.         else{
  120.            r=mid-1;
  121.      
  122.         }
  123.     }
  124.    
  125.     cout << ans << nl;
  126. }
  127.  
  128.  
  129. int main(){
  130.  
  131.                                 FastCode ;
  132.                      Zainab() ;
  133.  
  134.             int testCase=1;
  135.                 // cin >> testCase ;
  136.             for(int i=1 ; i<= testCase ; i++){
  137.                 //  cout << "Case #" << i << ": ";
  138.                 myCode();
  139.             }
  140.      
  141.  
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement