P1056 排座椅-洛谷
阿新 • • 發佈:2018-11-22
解題思路:不只是能溝通人數排序,過道號也需要排序(當然,這用道了貪心)。
#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; }