可以发现 行和列是不相关的 所以只用单独考虑行和列就行,取最大值,在按编号排序

#include<iostream>
#include<algorithm>
using namespace std;
int ans1[10010],ans2[10010];
struct node
{
    int i;
    int num;
}hang[10010],lie[10010];
bool cmp(node a,node b)
{
    return a.num>b.num;
}
int main()
{
    int n,m,k,l,d;
    cin>>n>>m>>k>>l>>d;
    for(int i=1;i<=max(n,m);i++)
        hang[i].i=i,lie[i].i=i;
    while(d--)
    {
        int x1,x2,y1,y2;
        cin>>x1>>y1>>x2>>y2;
        if(x1==x2)lie[y1+y2>>1].num++;
        else hang[x1+x2>>1].num++;
    }
    sort(hang+1,hang+n+1,cmp);
    sort(lie+1,lie+m+1,cmp);
    for(int i=1;i<=k;i++)ans1[i]=hang[i].i;
    for(int i=1;i<=l;i++)ans2[i]=lie[i].i;
    sort(ans1+1,ans1+1+k);
    sort(ans2+1,ans2+1+l);
    for(int i=1;i<=k;i++)
        cout<<ans1[i]<<' ';
    cout<<endl;
    for(int i=1;i<=l;i++)
        cout<<ans2[i]<<' ';
    cout<<endl;
}