제출 #1244154

#제출 시각아이디문제언어결과실행 시간메모리
1244154m5588ohammedTeam Contest (JOI22_team)C++20
0 / 100
0 ms328 KiB
#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 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...