感觉是三分,但是最后有一些地方卡了……
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
typedef long long ll;
using namespace std;
const int N = 4e5 + 5;
int n,m,k,x[N],y[N],ans;
map<pair<int,int>,bool> mp;
int calc(int a[N],int pos,int n){
if(pos < 1 || pos > n)return INT_MIN;
int ans = 0;
for(int i = 1;i <= k;i++)ans += abs(a[i] - pos);
return ans;
}
int get(int a[N],int n){
int l = 0,r = n + 1,ans = 1;
while(r - l > 2){
int mid1 = l + (r - l) / 3,mid2 = r - (r - l) / 3;
if(calc(a,mid1,n) >= calc(a,mid2,n))r = mid2;
else l = mid1;
}
for(int i = l;i <= r;i++){
if(calc(a,i,n) > calc(a,ans,n))ans = i;
}
return ans;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m >> k;
for(int i = 1;i <= k;i++)cin >> x[i] >> y[i],mp[{x[i],y[i]}] = true;
sort(x + 1,x + k + 1);
sort(y + 1,y + k + 1);
int xx = get(x,n),yy = get(y,m);
int ans = 0;
///???
cout << ans;
}