解题思路:不只是能沟通人数排序,过道号也需要排序(当然,这用道了贪心)。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAX=2005;
int M,N,K,L,D;
int x,y,x1,y1;
struct node{
int num;
int data;
}ax[MAX],ay[MAX];
bool cmp(node a,node b){
if(a.num>b.num) return true;
return false;
}
bool cmp1(node a,node b){
if(a.data<b.data)
return true;
return false;
}
int main(){
scanf("%d%d%d%d%d",&M,&N,&K,&L,&D);
for (int i = 0; i < D; ++i)
{
scanf("%d%d%d%d",&x,&y,&x1,&y1);
if(x==x1){
ay[min(y,y1)].data=min(y,y1);
ay[min(y,y1)].num++;
}
else{
ax[min(x,x1)].num++;
ax[min(x,x1)].data=min(x,x1);
}
}
sort(ax,ax+M,cmp);
sort(ay,ay+N,cmp);
sort(ax,ax+K,cmp1);
sort(ay,ay+L,cmp1);
for (int i = 0; i < K; ++i)
{
printf("%d",ax[i].data);
if(i!=K-1) printf(" ");
else{
printf("\n");
}
}
for (int i = 0; i < L; ++i)
{
printf("%d",ay[i].data);
if(i!=L-1) printf(" ");
else{
printf("\n");
}
}
return 0;
}