这个代码不应该是O(klogk)的吗
#include <bits/stdc++.h>
#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
const int N=100007;
struct node{
int idx,x,y;
bool operator<(const node o)const{
if(y!=o.y) return y<o.y;
return x>o.x;
}
} a[N],b[N];
int cnt,ans[N];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin>>t;
while(t-->0){
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=k;i++) ans[i]=0,a[i].idx=i,cin>>a[i].x>>a[i].y;
sort(a+1,a+k+1);
cnt=0;
for(int i=1;i<=k;i++) if(a[i].x>b[cnt].x&&a[i].y>b[cnt].y) b[++cnt]=a[i];
b[cnt+1]={0,n+1,m+1};
long long sum=0;
for(int i=1;i<=cnt;i++) sum+=1ll*(b[i].y-1)*(b[i].x-b[i-1].x);
sum+=1ll*m*(n-b[cnt].x);
if(cnt==1) ans[b[1].idx]=1ll*n*m-sum;
else for(int i=1;i<=cnt;i++) ans[b[i].idx]=1ll*(b[i+1].y-b[i].y)*(b[i].x-b[i-1].x);
cout<<sum<<'\n';
for(int i=1;i<=k;i++) cout<<ans[i]<<" \n"[i==k];
}
}