70分求调,悬赏1关
查看原帖
70分求调,悬赏1关
409774
Maysoul楼主2023/4/1 15:27

WA on #2 #8 #10

//2023/4/1
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
struct point{
	int x=0,y=0;
}a[100001];
bool cmp(point x,point y)
{
	if(x.x==y.x)
	{
		return x.y<y.y;
	}
	return x.x<y.x;
}
int main()
{
	point xmax;
	point ymax;
	point ans[50000];
	int n,x1,y1;
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		cin>>a[i].x>>a[i].y;
		if(a[i].x>=xmax.x)
		{   
			if(a[i].x==xmax.x)
			{
				if(a[i].y>xmax.y)
				{
					xmax.x=a[i].x;
					xmax.y=a[i].y;
					x1=i;
				}
			}
			else
			{
				xmax.x=a[i].x;
				xmax.y=a[i].y;
				x1=i;
			}
		}
		if(a[i].y>=ymax.y)
		{ 
		
			if(a[i].y==ymax.y)
			{
				if(a[i].x>ymax.x)
				{
					ymax.x=a[i].x;
					ymax.y=a[i].y;
					y1=i;
				}
			}
			else
			{
				ymax.x=a[i].x;
				ymax.y=a[i].y;
				y1=i;
			}
		}
	}
	sort(a+1,a+1+n,cmp);
	int k=0;
	for (int i=1;i<=n;i++)
	{
		if(a[i].x==a[i+1].x)
		{
			continue;
		}
		if(a[i].x>ymax.x&&a[i].y>xmax.y)
		{
			ans[k].x=a[i].x;
			ans[k].y=a[i].y;
			for (int j=0;j<k;j++)
			{
				if(ans[j].x<ans[k].x&&ans[j].y<ans[k].y)
				{
					ans[j].x=-1;
					ans[j].y=-1;
				}
			}
			k++; 
		}
	}
	ans[k].x=xmax.x;
	ans[k].y=xmax.y;
	ans[k+1].x=ymax.x;
	ans[k+1].y=ymax.y;
	sort(ans,ans+k+2,cmp);
	for (int i=0;i<=k;i++)
	{
		if(ans[i].x==-1&&ans[i].y==-1)
		{
			continue;
		}
		if(ans[i].x==ans[i+1].x&&ans[i].y==ans[i+1].y)
		{
			continue;
		}
		cout<<"("<<ans[i].x<<","<<ans[i].y<<")"<<",";
	}
	cout<<"("<<ans[k+1].x<<","<<ans[k+1].y<<")";
	return 0;
}

2023/4/1 15:27
加载中...