#include <bits/stdc++.h>
using namespace std;
int main() {
int n, x0, y0;
cin >> x0 >> y0 >> n;
int a[n], b[n];
for(int i=0;i<n;i++)
cin >> a[i] >> b[i];
/*
vector<int> xminus = {0}, yminus = {0}, xplus = {0};
for(int i=0;i<n;i++) {
xminus.push_back(a[i]-1);
xplus.push_back(n-a[i]);
yminus.push_back(b[i]-1);
}
*/
vector<int> xminus(40), xplus(40);
iota(xminus.begin(),xminus.end(),0);
iota(xplus.begin(),xplus.end(),0);
long long ans = 4e9;
for(auto west: xminus)
for(auto east: xplus) {
// consider north/south.
vector<int> pts[x0];
for(int i=0;i<n;i++)
for(int j=max(1,a[i]-west);j<=min(x0,a[i]+east);j++)
pts[j-1].push_back(b[i]);
int minTot = 0;
for(int i=0;i<x0;i++) {
sort(pts[i].begin(),pts[i].end());
int sz = pts[i].size();
if(sz == 0) {
minTot = 2e9;
break;
}
for(int j=0;j<sz-1;j++)
minTot = max(minTot,pts[i][j+1]-pts[i][j]);
minTot = max(minTot,pts[i][0]-1+x0-pts[i][sz-1]);
}
ans = min(ans, 0LL + minTot + west + east);
}
cout << ans;
/*
for(auto x1: xminus)
for(auto y1: yminus) {
vector<int> specX = {x0+x1}, specY = {y0+y1};
for(int i=0;i<n;i++) {
if(a[i]-x1-1 >= 1)
specX.push_back(a[i]-1);
if(b[i]-y1-1 >= 1)
specY.push_back(b[i]-1);
}
vector<pair<int,int>> cond;
for(auto xs: specX)
for(auto ys: specY) {
pair<int,int> pts[n];
for(int i=0;i<n;i++) {
if(a[i] <= xs && b[i] <= ys)
pts[i] = {xs-a[i],ys-b[i]};
else
pts[i]={2e9,2e9};
}
sort(pts,pts+n);
int pmin = 2e9;
cond.push_back({pts[0].first,2e9});
for(int i=0;i<n;i++) {
pmin = min(pmin, pts[i].second);
cond.push_back({(i==n-1?2e9:pts[i+1].first),pmin});
}
}
cond.push_back({2e9,y1});
cond.push_back({x1,2e9});
sort(cond.begin(),cond.end());
int sz = cond.size();
for(int i=sz-1;i--;)
cond[i].second = max(cond[i].second, cond[i+1].second);
for(int i=1;i<sz;i++)
ans = min(ans, 0LL+cond[i-1].first+cond[i].second);
}
cout << ans;
*/
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |