思路
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e3 + 10; struct node{ int id; int cnt; bool operator < (const node &a)const{ if(cnt == a.cnt) return id < a.id; return cnt > a.cnt; } }; int n, m, k, l, d; int cntr[maxn], cntc[maxn]; vector<node> vr, vc; void init(){ for(int i = 1; i < n; i++){ vr.push_back({i, cntr[i]}); } for(int i = 1; i < m; i++){ vc.push_back({i, cntc[i]}); } } int main(){ scanf("%d%d%d%d%d", &n, &m, &k, &l, &d); int x1, y1, x2, y2; for(int i = 1; i <= d; i++){ scanf("%d%d%d%d", &x1, &y1, &x2, &y2); if(x1 == x2){ cntc[min(y1, y2)]++; } else{ cntr[min(x1, x2)]++; } } init(); sort(vr.begin(), vr.end()); sort(vc.begin(), vc.end()); vector<int> ans; for(int i = 0; i < k; i++){ ans.push_back(vr[i].id); } sort(ans.begin(), ans.end()); for(auto &itm : ans){ cout << itm << " "; } cout << endl; ans.clear(); for(int i = 0; i < l; i++){ ans.push_back(vc[i].id); } sort(ans.begin(), ans.end()); for(auto &itm : ans){ cout << itm << " "; } cout << endl; return 0; }