#include<bits/stdc++.h>
using namespace std;
long long fa[10000005],fb[10000005],a[100005],b[100005],amax=0,bmax=0,s1,f1[100000005],f2[100000005];
int main(){
int h,w,n;
cin>>h>>w>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
fa[a[i]]=1;
fb[b[i]]=1;
amax=max(amax,a[i]);
bmax=max(bmax,b[i]);
}
for(int i=1;i<=amax;i++)
f1[i]=f1[i-1]+fa[i];
for(int i=1;i<=bmax;i++)
f2[i]=f2[i-1]+fb[i];
for(int i=1;i<=n;i++)
cout<<f1[a[i]]<<" "<<f2[b[i]]<<endl;
return 0;
}
看截图,是不是写错了,后面两参数没用
你的算法有问题,不应该直接用那么大的数组来求
其实按行排列,再按列排列,针对每个元素,找出排列后的行列位置即可
用稀疏矩阵,我只存储有值的点,没值的点不存。