思路



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