This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=150005;
int n,nx,ny,nz;
int x[N],y[N],z[N];
vector<ll> px,py,pz;
vector<int> vx[N],vy[N];
int mx[N];
ll mx2[N];
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();
ny=py.size();
nz=pz.size();
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();
vx[x[i]].emplace_back(i);
}
for(int i=1;i<=nx;i++){
if(vx[i].empty())continue;
int idx=0;
for(int j=1;j<=ny;j++){
mx[j]=0;
int mn=nz+1;
for(auto k:vy[j])mn=min(mn,z[k]);
if(idx>mn)mx[j]=idx;
for(auto k:vy[j])idx=max(idx,z[k]);
}
mx2[n+1]=-1e18;
for(int i=n;i>=1;i--)mx2[i]=max(mx2[i+1],py[i]+pz[mx[i]]);
for(auto j:vx[i])ans=max(ans,px[i]+mx2[y[j]+1]);
for(auto j:vx[i])vy[y[j]].emplace_back(j);
}
cout << ans;
}
# | 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... |