可以发现 行和列是不相关的 所以只用单独考虑行和列就行,取最大值,在按编号排序
#include<iostream>
#include<algorithm>
using namespace std;
int ans1[10010],ans2[10010];
struct node
{
int i;
int num;
}hang[10010],lie[10010];
bool cmp(node a,node b)
{
return a.num>b.num;
}
int main()
{
int n,m,k,l,d;
cin>>n>>m>>k>>l>>d;
for(int i=1;i<=max(n,m);i++)
hang[i].i=i,lie[i].i=i;
while(d--)
{
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
if(x1==x2)lie[y1+y2>>1].num++;
else hang[x1+x2>>1].num++;
}
sort(hang+1,hang+n+1,cmp);
sort(lie+1,lie+m+1,cmp);
for(int i=1;i<=k;i++)ans1[i]=hang[i].i;
for(int i=1;i<=l;i++)ans2[i]=lie[i].i;
sort(ans1+1,ans1+1+k);
sort(ans2+1,ans2+1+l);
for(int i=1;i<=k;i++)
cout<<ans1[i]<<' ';
cout<<endl;
for(int i=1;i<=l;i++)
cout<<ans2[i]<<' ';
cout<<endl;
}
京公网安备 11010502036488号