Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 500;
- int qsum[N + 1][N + 1];
- int getSum(int x1, int y1, int x2, int y2){
- return qsum[x2][y2] - qsum[x1 - 1][y2] - qsum[x2][y1 - 1] + qsum[x1 - 1][y1 - 1];
- }
- int main(){
- int Q = 2;
- while(Q--){
- int row, col, nTree;
- scanf("%d%d%d", &row, &col, &nTree);
- for(int i = 1; i <= N; ++i){
- for(int j = 1; j <= N; ++j){
- qsum[i][j] = 0;
- }
- }
- for(int i = 1; i <= nTree; ++i){
- int r, c;
- scanf("%d%d", &r, &c);
- ++qsum[++r][++c];
- }
- for(int i = 1; i <= row; ++i){
- for(int j = 1; j <= col; ++j){
- qsum[i][j] += qsum[i - 1][j] + qsum[i][j - 1] - qsum[i - 1][j - 1];
- }
- }
- int mx = 0;
- for(int d = 1; d <= min(row, col); ++d){
- for(int i = 1; i <= row - d + 1; ++i){
- bool esc = false;
- for(int j = 1; j <= col - d + 1; ++j){
- int ir = i + d - 1;
- int jr = j + d - 1;
- int ans = getSum(i, j, ir, jr) - ((d > 2) ? getSum(i + 1, j + 1, ir - 1, jr - 1) : 0);
- if(ans == 0){
- mx = max(mx, d);
- esc = true;
- break;
- }
- }
- if(esc){
- break;
- }
- }
- }
- cout << mx << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement