前缀和
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const long long INF=1e18;
long long sumx[N],sumy[N],cntx[N],cnty[N],x[N],y[N];
void fun() {
int n,m,t;
cin>>n>>m>>t;
for(int i=1;i<=t;i++){
cin>>x[i]>>y[i];//输入
cntx[x[i]]++;//横坐标个数
sumx[x[i]]+=x[i];//横坐标值
cnty[y[i]]++;
sumy[y[i]]+=y[i];
}
for(int i=1;i<=n;i++){
cntx[i]+=cntx[i-1];//横坐标个数前缀和
sumx[i]+=sumx[i-1];//横坐标前缀和
}
for(int i=1;i<=m;i++){
cnty[i]+=cnty[i-1];//纵
sumy[i]+=sumy[i-1];//纵
}
long long ans=INF;
for(int i=1;i<=t;i++){
long long res=(cntx[x[i]]*x[i]-sumx[x[i]])//假设所有点都在选中点,减去实际值
+(sumx[n]-sumx[x[i]])
-(t-cntx[x[i]])*x[i];
res+=(cnty[y[i]]*y[i]-sumy[y[i]])
+(sumy[m]-sumy[y[i]])
-(t-cnty[y[i]])*y[i];
ans=min(ans,res);
}
cout<<ans<<endl;
}
signed main()
{
fun();
return 0;
}

京公网安备 11010502036488号