P1056 排座椅-洛谷

解题思路:不只是能沟通人数排序,过道号也需要排序(当然,这用道了贪心)。 

#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;
}

猜你喜欢

转载自blog.csdn.net/lianghudream/article/details/84073168