90分求调
查看原帖
90分求调
749062
zhuo_c_da楼主2024/9/3 19:02

RT

#include<bits/stdc++.h>
using namespace std;
struct l
{
	int x1,y1,x2,y2;
}lie[20001];
struct h
{
	int x1,y1,x2,y2;
}hang[20001];
struct tp
{
    int s,xy;
}tpl[100010],tph[100010];
int lt[100010],ht[100010];
bool cmpl(l a,l b)
{
	if(a.x1<b.x2) return true;
	else return false;
}
bool cmph(h a,h b)
{
	if(a.y1<b.y2) return true;
	else return false;
}
bool cmpt(tp a,tp b)
{
	if(a.s>b.s) return true;
	else return false;
}
int main()
{
//	freopen("1.in","r",stdin);
//	freopen("1.out","w",stdout);
	int m,n,k,l,d,x,y,p,q,lien=0,hangn=0,liem=0,hangm=0;
	cin>>m>>n>>k>>l>>d;
	for(int i=1;i<=d;i++)
	{
		cin>>x>>y>>p>>q;
		if(x>p) swap(x,p);
		if(y>q) swap(y,q);
		if(y==q) lien+=1,lie[lien].x1=x,lie[lien].y1=y,lie[lien].x2=p,lie[lien].y2=q;
		else if(x==p) hangn+=1,hang[hangn].x1=x,hang[hangn].y1=y,hang[hangn].x2=p,hang[hangn].y2=q;
	}
	sort(lie+1,lie+lien+1,cmpl);
	sort(hang+1,hang+hangn+1,cmph);
	for(int i=1;i<=lien;i++)
		if(lie[i].x1==lie[i+1].x1&&lie[i].x2==lie[i+1].x2) tpl[liem+1].s+=1;
		else
		{
		    liem+=1;
			tpl[liem].s+=1;
			tpl[liem].xy=lie[i].x1;
		}
	for(int i=1;i<=hangn;i++)
		if(hang[i].y1==hang[i+1].y1&&hang[i].y2==hang[i+1].y2) tph[hangm+1].s+=1;
		else
		{
		    hangm+=1;
			tph[hangm].s+=1;
			tph[hangm].xy=hang[i].y1;
		}
	sort(tpl+1,tpl+liem+1,cmpt);
	sort(tph+1,tph+hangm+1,cmpt);
	for(int i=1;i<=min(k,liem);i++) lt[i]=tpl[i].xy;
	for(int i=1;i<=min(l,hangm);i++) ht[i]=tph[i].xy;
	sort(lt+1,lt+min(liem,k)+1);
	sort(ht+1,ht+min(l,hangm)+1);
	for(int i=1;i<min(k,liem);i++) cout<<lt[i]<<" ";
	cout<<lt[min(k,liem)]<<endl;
	for(int i=1;i<min(l,hangm);i++) cout<<ht[i]<<" ";
	cout<<ht[min(l,hangn)];
	return 0;
}
2024/9/3 19:02
加载中...