是不是思路有问题
#include <cstdio>
#include <algorithm>
#define MAX_SIZE 1001
#define MAX_TALK 2001
using namespace std;
int talk[MAX_SIZE][MAX_SIZE];
int res_h[MAX_TALK],res_p[MAX_TALK]; //存储水平与垂直分隔的结果
int main(){
int m,n,k,l,d;
int col[MAX_SIZE],row[MAX_SIZE],k1=0,l1=0; //存储每列和后面一列、每行和后面一行喜欢讲话的人数
scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);
fill(col,col+n,-1);
fill(row,row+m,-1);
for(int i=0;i<d;i++){
int x1,x2,y1,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
talk[x1-1][y1-1]=talk[x2-1][y2-1]=i+1;
}
for(int i=0;i<m;i++){ //查找每列和后面一列喜欢讲话的人数
for(int j=0;j<n-1;j++){
if(talk[i][j]!=0){
if(talk[i][j]==talk[i][j+1]){
col[j]++;
}
}
}
}
for(int i=0;i<m-1;i++){ //每行和后面一行喜欢讲话的人数
for(int j=0;j<n;j++){
if(talk[i][j]!=0){
if(talk[i][j]==talk[i+1][j]){
row[i]++;
}
}
}
}
while(k>0){
int maxn=max_element(row,row+m)-row;
res_h[k1++]=maxn+1;
k--;
row[maxn]=-1;
}
while(l>0){
int maxn=max_element(col,col+n)-col;
res_p[l1++]=maxn+1;
l--;
col[maxn]=-1;
}
sort(res_h,res_h+k1),sort(res_p,res_p+l1);
printf("%d",res_h[0]);
for(int i=1;i<k1;i++){
printf(" %d",res_h[i]);
}
printf("\n%d",res_p[0]);
for(int i=1;i<l1;i++){
printf(" %d",res_p[i]);
}
return 0;
}