程序怎么优化呀?超时了

img

#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;
}


看截图,是不是写错了,后面两参数没用

img

你的算法有问题,不应该直接用那么大的数组来求
其实按行排列,再按列排列,针对每个元素,找出排列后的行列位置即可

用稀疏矩阵,我只存储有值的点,没值的点不存。