#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];
int n,inf=3e10;
array <int,3> arr[150001];
int calc(){
for(int i=1;i<=n;i++) ansY[i]=valY[i]=-inf;
sort(arr+1,arr+n+1);
int mx=-1;
for(int i=1;i<=n;i++){
//out<<arr[i][0]<<" "<<arr[i][1]<<" "<<arr[i][2]<<" "<<ansY[4]<<endl;
for(int Y=arr[i][1]+1;Y<=300;Y++){
if(ansY[Y]>arr[i][2]) mx=max(mx,ansY[Y]+Y+arr[i][0]);
}
valY[arr[i][1]]=max(valY[arr[i][1]],arr[i][2]);
for(int Y=arr[i][1]-1;Y>=0;Y--){
ansY[arr[i][1]]=max(ansY[arr[i][1]],valY[Y]);
}
//cout<<valY[1]<<" "<<ansY[4]<<endl;
}
//cout<<"END"<<endl;
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... |