先排出现次数 再按id大小排序打印

行与列是单独看的

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct channel{
    int id;
    int count;
};
bool comparecount(const channel & a,const channel &b){
    return a.count>b.count;
}
bool compareid(const channel & a,const channel &b){
    return a.id<b.id;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(),cout.tie();
    int n,m,k,l,d;
    cin>>n>>m>>k>>l>>d;
    vector<channel> column(m+1);
    vector<channel> row(n+1);
    for(int i=1;i<=m;i++){
        column[i].id=i;
        column[i].count=0;
    }
    for(int i=1;i<=n;i++){
        row[i].id=i;
        row[i].count=0;
    }
    for(int i=1;i<=d;i++){
        int x1,y1,x2,y2;
        cin>>x1>>y1>>x2>>y2;
        if(x1==x2){
            int k=min(y1,y2);
            column[k].count++;
        }else{
            int k=min(x1,x2);
            row[k].count++;
        }
    }
    sort(row.begin()+1,row.begin()+n,comparecount);//插的范围1-n-1
    sort(row.begin()+1,row.begin()+k+1,compareid);//打印1-k
    for(int i=1;i<=k;i++)cout<<row[i].id<<' ';
    cout<<'\n';
    sort(column.begin() + 1, column.begin() + m, comparecount);
    sort(column.begin() + 1, column.begin() + 1 + l, compareid);
    for (int i = 1; i <= l; ++i) {
        cout << column[i].id << ' ';
    }
    return 0;
}