p1056 排座椅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

#include<iostream>
#include<cstdlib>
#include<queue>
#include<algorithm>
#include<cstring>
#define maxn 1005
using namespace std;
int M,N,K,L,D;
vector<int>a1,a2;
struct
{
int id,cnt;
friend bool operator < (data a,data b)
{
return a.cnt>b.cnt;
}
};
data a[maxn],b[maxn];
int main()
{

//freopen("seat.out","w",stdout);

scanf("%d%d%d%d%d",&M,&N,&K,&L,&D);

for(int i=1;i<=D;i++)
{
int x,y,p,q;
scanf("%d%d%d%d",&x,&y,&p,&q);
if(x==p){b[min(y,q)].cnt++;b[min(y,q)].id=min(y,q);}
if(y==q){a[min(x,p)].cnt++;a[min(x,p)].id=min(x,p);}
}

sort(a+1,a+maxn);
sort(b+1,b+maxn);

for(int i=1;i<=K;i++)
{
if(a[i].id>0)a1.push_back(a[i].id);
}
sort(a1.begin(),a1.end());

for(int i=0;i<a1.size();i++)
printf("%d ",a1[i]);

printf("n");

for(int i=1;i<=L;i++)
{
if(b[i].id>0)a2.push_back(b[i].id);
}
sort(a2.begin(),a2.end());

for(int i=0;i<a2.size();i++)
printf("%d ",a2[i]);

return 0;
}