前缀和
#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; }