#include<bits/stdc++.h>
using namespace std;
int main(){
int M,N,K,L,D;
cin>>M>>N>>K>>L>>D;
int stu[D][4];
for(int i=0;i<D;i++){
cin>>stu[i][0]>>stu[i][1]>>stu[i][2]>>stu[i][3];
}
int X[M],Y[N];// X为横线,Y为竖线,数组记录每一道线能分开的点的数量
for(int i=0;i<M;i++){
X[i]=0;
for(int j=0;j<D;j++){
if((stu[j][0]==i&&stu[j][2]==i+1)||(stu[j][0]==i+1&&stu[j][2]==i))
X[i]++;//计数
}
}
for(int i=0;i<N;i++){
Y[i]=0;
for(int j=0;j<D;j++){
if((stu[j][1]==i&&stu[j][3]==i+1)||(stu[j][1]==i+1&&stu[j][3]==i))
Y[i]++;//计数
}
}
//线条划分数量检测
/*for(int i=0;i<M;i++){
cout<<"X["<<i<<"]="<<X[i]<<' ';
}
cout<<endl;
for(int i=0;i<N;i++){
cout<<"Y["<<i<<"]="<<Y[i]<<' ';
}
cout<<endl<<endl<<endl;*/
int xmax[K],ymax[L],pos;
int max;
for(int j=0;j<K;j++){
max=X[0];
for(int i=0;i<M;i++){
if(X[i]>=max){
max=X[i];
pos=i;
}
}
xmax[j]=pos;
X[pos]=-1;
}
for(int j=0;j<L;j++){
max=Y[0];
for(int i=0;i<N;i++){
if(Y[i]>=max){
max=Y[i];
pos=i;
}
}
ymax[j]=pos;
Y[pos]=-1;
}
//线条划分数量检测
/*for(int i=0;i<M;i++){
cout<<"X["<<i<<"]="<<X[i]<<' ';
}
cout<<endl;
for(int i=0;i<N;i++){
cout<<"Y["<<i<<"]="<<Y[i]<<' ';
}
cout<<endl<<endl<<endl; */
sort(xmax,xmax+K,less<int>());
sort(ymax,ymax+L,less<int>());
for(int i=0;i<K;i++){
cout<<xmax[i]<<' ';
}
cout<<endl;
for(int i=0;i<L;i++){
cout<<ymax[i]<<' ';
}
}
洛谷习题P1056
最新推荐文章于 2023-02-06 11:46:23 发布