```
#include <bits/stdc++.h>
using namespace std;
/*
m行n列 k条横向通道 l条纵向通道 d对说话的同学
*/
int m,n,k,l,d;
//横纵坐标数组,存储在这个位置画线隔开几对同学
int x[1010],y[1010];
//横纵坐标桶排序的数组
int rx[1010],ry[1010];
int main(){
//提升读写效率
ios::sync_with_stdio(false);
int x1,y1,x2,y2;//用来存放说话的人的坐标
int i,j;
cin>>m>>n>>k>>l>>d;
//读入d对说话的人
for(i = 1;i <= d;i++){
cin>>x1>>y1>>x2>>y2;
//说明在同一行,用列隔开
if(x1 == x2){
//该列的线能隔开几个人(线在人的右侧)
y[min(y1,y2)]++;
}else{
//该行的线能隔开几个人(线在人的上方)
x[min(x1,x2)]++;
}
}
//桶排序,标记k条横向的通道
for(i = 1;i <= k;i++){
int maxn = -1;
int p;
for(j = 1;j < m;j++){
if(x[j] > maxn){
maxn = x[j];
p = j;
}
}
//标记该行的线分割了0个人
x[p] = 0;
rx[p]++;
}
//桶排序,标记l条纵向的通道
for(i = 1;i <= l;i++){
int maxn = -1;
int p;
for(j = 1;j < n;j++){
if(y[j] > maxn){
maxn = y[j];
p = j;
}
}
//标记该列的线分割了0个人
y[p] = 0;
ry[p]++;
}
for(i = 0;i < 1005;i++){
if(rx[i]) cout<<i<<" ";
}
cout<<endl;
for(i = 0;i < 1005;i++){
if(ry[i]) cout<<i<<" ";
}
}
```
by wupeichen @ 2022-05-02 16:35:41