Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 5e2 + 10;
- const int M = 5e2 + 10;
- int qs[N][M];
- int n, m;
- void Setting();
- int Sum(int si, int sj, int ei, int ej){
- if(si > ei or sj > ej) return 0;
- return qs[ei][ej] - qs[si-1][ej] - qs[ei][sj-1] + qs[si-1][sj-1];
- }
- bool Check(int limit){
- int sum = 4 * limit - 4;
- for(int i=limit;i<=n;i++){
- for(int j=limit;j<=m;j++){
- int SumBig = Sum(i - limit + 1, j - limit + 1, i, j);
- int SumSmall = Sum(i - limit + 2, j - limit + 2, i - 1, j - 1);
- if(SumBig - SumSmall == sum) return true;
- }
- }
- return false;
- }
- int Solve(){
- int nPoint;
- scanf("%d", &nPoint);
- for(int i=1;i<=nPoint;i++){
- int pi, pj;
- scanf("%d%d", &pi, &pj);
- pi ++, pj ++;
- qs[pi][pj] = 0;
- }
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- qs[i][j] += qs[i-1][j] + qs[i][j-1] - qs[i-1][j-1];
- }
- }
- for(int i=min(n, m);i>=1;i--){
- if(Check(i)) return i;
- }
- return 0;
- }
- int main(){
- int TC = 2;
- while(TC --){
- scanf("%d%d", &n, &m);
- Setting();
- printf("%d\n", Solve());
- }
- return 0;
- }
- void Setting(){
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- qs[i][j] = 1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement