题目链接:https://www.luogu.org/problemnew/show/P1056
#include<algorithm>
#include<cstdio>
#include<iostream>
using namespace std;
const int maxn=1010;
int L[maxn],K[maxn];
struct Node{
int w;
int pos;
}A[maxn],B[maxn];
int m,n,LL,KK,D;
int x,y,p,q;
bool cmp(struct Node &a,struct Node &b)
{
return a.w>b.w;
}
int main(void)
{
cin>>m>>n>>KK>>LL>>D;
for(int i=1;i<=m;i++) B[i].pos=i,B[i].w=0;
for(int i=1;i<=n;i++) A[i].pos=i,A[i].w=0;
for(int i=1;i<=D;i++)
{
cin>>x>>y>>p>>q;
//(x,y)表示第i行,第j列
if(x==p)
{
int mincol=min(y,q);
A[mincol].w++;
}
else
{
int minrow=min(x,p);
B[minrow].w++;
}
/*
if(y==q)
{
int minx=min(x,p);
A[minx].w++;
}
if(x==p)
{
int miny=min(y,q);
B[miny].w++;
}
*/
}
/*
for(int i=1;i<=m;i++) printf("B[%d]=%d pos=%d\n",i,B[i].w,B[i].pos);
for(int i=1;i<=n;i++) printf("A[%d]=%d pos=%d\n",i,A[i].w,A[i].pos);
*/
sort(A+1,A+n+1,cmp);
sort(B+1,B+m+1,cmp);
/*
for(int i=1;i<=m;i++) printf("B[%d]=%d pos=%d\n",i,B[i].w,B[i].pos);
for(int i=1;i<=n;i++) printf("A[%d]=%d pos=%d\n",i,A[i].w,A[i].pos);
*/
for(int i=1;i<=LL;i++) L[i]=A[i].pos;
for(int i=1;i<=KK;i++) K[i]=B[i].pos;
sort(L+1,L+LL+1);
sort(K+1,K+KK+1);
for(int i=1;i<=KK;i++)
{
if(i!=KK) printf("%d ",K[i]);
else printf("%d",K[i]);
}
printf("\n");
for(int i=1;i<=LL;i++)
{
if(i!=LL) printf("%d ",L[i]);
else printf("%d",L[i]);
}
return 0;
}