Advertisement
Guest User

Untitled

a guest
Jul 27th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.22 KB | None | 0 0
  1. // __   _   _   _   _____   _   _   _____   _   _       ___
  2. //|  \ | | | | | | /  ___| | | | | /  ___/ | | | |     /   |
  3. //|   \| | | | | | | |     | | | | | |___  | |_| |    / /| |
  4. //| |\   | | | | | | |  _  | | | | \___  \ |  _  |   / / | |
  5. //| | \  | | |_| | | |_| | | |_| |  ___| | | | | |  / /  | |
  6. //|_|  \_| \_____/ \_____/ \_____/ /_____/ |_| |_| /_/   |_|
  7.  
  8. #include<iostream>
  9. #include<fstream>
  10. #include<stdio.h>
  11. #include<cstdio>
  12. #include<stdlib.h>
  13. #include<string>
  14. #include<string.h>
  15. #include<ctype.h>
  16. #include<algorithm>
  17. #include<cmath>
  18. #include<set>
  19. #include<queue>
  20. #include<stack>
  21. #include<iomanip>
  22. #include<vector>
  23. #include<map>
  24. #define PB(x) push_back(x)
  25. #define MP(x, y) make_pair(x, y)
  26. #define ff first
  27. #define ss second
  28. #define ll long long
  29. #define pii pair< int, int >
  30. #define MEM(p, v) memset(p, v, sizeof(p))
  31. #define READ(f) freopen(f, "r", stdin)
  32. #define WRITE(f) freopen(f, "w", stdout)
  33. #define S system("pause")
  34. #define R return(0)
  35. #define INF int(1e9)
  36. #define MAX_5 int(1e5+5)
  37. #define MAX_6 int(1e6+6)
  38. #define ll long long
  39. using namespace std;
  40. int a[3005][3005],d[3005][3005],i,m,ans,k,l,j,r,q,o,x,n,ma,mi,w,c;
  41. string s;
  42. int get(int i,int j,int ii,int jj)
  43. {
  44.  return d[ii][jj]-d[ii][j-1]-d[i-1][jj]+d[i-1][j-1];
  45. }
  46. int go(int k)
  47. {
  48.     for(q=1;q<=n;q++)
  49.     for(o=1;o<=m;o++)
  50.         d[q][o]=d[q-1][o]+d[q][o-1]-d[q-1][o-1]+(a[q][o]>k?1:(a[q][o]==k?0:-1));
  51.        
  52.         /*
  53.         cout<<k<<endl;
  54.        
  55.        
  56.     for(q=1;q<=n;q++){
  57.     for(o=1;o<=m;o++)cout<<d[q][o]<<" ";cout<<endl;}
  58.     cout<<"---"<<endl;
  59.         */
  60.         int f=1;
  61.     for(q=1;q<=n-w+1;q++)
  62.     for(o=1;o<=m-c+1;o++)
  63.     {
  64.         int u=get(q,o,q+w-1,o+c-1);
  65.         if(u<0)return -1;
  66.         if(u==0)f=0;
  67.     }
  68.     return f;
  69. }
  70. main()
  71. {
  72.           cin>>n>>m>>w>>c;
  73.           for(i=1;i<=n;i++)
  74.           for(j=1;j<=m;j++)scanf("%d",&a[i][j]);
  75.          
  76.           l=1;r=n*m;
  77.          
  78.          
  79.          
  80.           while(l<=r)
  81.           {
  82.                     int mid=l+r;mid/=2;
  83.                     x=go(mid);
  84.                     if(x==-1)r=mid-1;else
  85.                     if(x==1) l=mid+1;else                    
  86.                     if(x==0){printf("%d\n",mid);break;}
  87.           }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement