#include <bits/stdc++.h>
#define endl "\n"
#define mod 1000000007
using namespace std;
#define int long long
const int N=(1<<19);
int Tree[N*2+5],valY[301],ansY[301],valZ[301];
int n,inf=3e10;
array <int,3> arr[150001];
int calc(){
for(int i=0;i<=300;i++){
ansY[i]=valY[i]=-inf;
valZ[i]=inf;
}
vector <array<int,2>> v[301];
for(int i=1;i<=n;i++){
v[arr[i][0]].push_back({arr[i][1],arr[i][2]});
}
int mx=-1;
for(int x=0;x<=300;x++){
for(auto [Yc,Zc]:v[x]){
for(int Y=Yc+1;Y<=300;Y++){
if(ansY[Y]>Zc&&ansY[Y]>valZ[Y]) mx=max(mx,ansY[Y]+Y+x);
}
}
for(auto [Yc,Zc]:v[x]){
valY[Yc]=max(valY[Yc],Zc);
valZ[Yc]=min(valZ[Yc],Zc);
for(int Y=Yc+1;Y<=300;Y++){
ansY[Y]=max(ansY[Y],valY[Yc]);
}
}
}
return mx;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i][0]>>arr[i][1]>>arr[i][2];
}
int ans1=calc();
for(int i=1;i<=n;i++) swap(arr[i][1],arr[i][2]);
cout<<max(ans1,calc());
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |