Submission #770363

#TimeUsernameProblemLanguageResultExecution timeMemory
770363ttamxTeam Contest (JOI22_team)C++14
37 / 100
2071 ms63284 KiB
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N=150005;
const int M=4005;

int n,nx,ny,nz;
int x[N],y[N],z[N];
vector<ll> px,py,pz;
pair<int,int> vx[N],vy[N];
int dp[M][M];
ll ans=-1;

int main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n;
    for(int i=1;i<=n;i++){
        cin >> x[i] >> y[i] >> z[i];
        px.emplace_back(x[i]);
        py.emplace_back(y[i]);
        pz.emplace_back(z[i]);
    }
    px.emplace_back(-1e18);
    py.emplace_back(-1e18);
    pz.emplace_back(-1e18);
    sort(px.begin(),px.end());
    sort(py.begin(),py.end());
    sort(pz.begin(),pz.end());
    px.erase(unique(px.begin(),px.end()),px.end());
    py.erase(unique(py.begin(),py.end()),py.end());
    pz.erase(unique(pz.begin(),pz.end()),pz.end());
    nx=px.size()-1;
    ny=py.size()-1;
    nz=pz.size()-1;
    z[0]=nz+1;
    for(int i=1;i<=n;i++){
        x[i]=lower_bound(px.begin(),px.end(),x[i])-px.begin();
        y[i]=lower_bound(py.begin(),py.end(),y[i])-py.begin();
        z[i]=lower_bound(pz.begin(),pz.end(),z[i])-pz.begin();
        dp[x[i]][y[i]]=max(dp[x[i]][y[i]],z[i]);
    }
    for(int i=1;i<=nx;i++){
        for(int j=1;j<=ny;j++){
            dp[i][j]=max({dp[i][j],dp[i-1][j],dp[i][j-1]});
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(x[i]<=x[j]||y[i]>=y[j])continue;
            int res=dp[x[i]-1][y[j]-1];
            if(res>max(z[i],z[j]))ans=max(ans,px[x[i]]+py[y[j]]+pz[res]);
        }
    }
    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...