제출 #696282

#제출 시각아이디문제언어결과실행 시간메모리
696282ld_minh4354Team Contest (JOI22_team)C++17
0 / 100
38 ms9560 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define fi first
#define se second
#define pb push_back



signed main()
{
	ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//	freopen("input.000","r",stdin);
//	freopen("output.000","w",stdout);
//	srand((unsigned)time(NULL));
//	rand()
	
	static int n,i,max_x[150005],max_y[150005],max_x_global,max_y_global,cur_num,cur_id,j,ans;
	static pair<pair<int,int>,int> x[150005];
	static pair<int,pair<int,int>> y[150005];
	
	cin>>n;
	for (i=1;i<n+1;i++) cin>>x[i].fi.fi>>x[i].fi.se>>x[i].se;
	
	sort(x+1,x+n+1);
	
	max_x[0]=max_y[0]=0;
	for (i=1;i<n+1;i++)
	{
		max_x[i]=max(max_x[i-1], x[i].fi.fi);
		max_y[i]=max(max_y[i-1], x[i].fi.se);
	}
	
	while (max_x[n]==x[n].fi.fi and max_y[n]==x[n].fi.se and n>0) n--;
	
	if (n<3)
	{
		cout<<-1;return 0;
	}
	
	for (i=1;i<n+1;i++) y[i]={x[i].se,{x[i].fi.fi, x[i].fi.se}};
	sort(y+1,y+n+1);
	
//	for (i=1;i<n+1;i++) cout<<y[i].fi<<y[i].se.fi<<y[i].se.se<<"\n";
	
	max_x_global=max_y_global=0;
	cur_num=y[1].fi;
	cur_id=1;
	ans=-1;
	
	for (i=1;i<n+1;i++)
	{
		if (cur_num < y[i].fi)
		{
			for (j=cur_id; j<i; j++)
			{
				max_x_global=max(max_x_global,y[j].se.fi);
				max_y_global=max(max_y_global,y[j].se.se);
			}
			
			cur_id=i;
			cur_num=y[i].fi;
		}
		
		if (y[i].se.fi < max_x_global and y[i].se.se < max_y_global)
		ans=max(ans,y[i].fi + max_x_global + max_y_global);
	}
	
	cout<<ans;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...