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;
#define int long long
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define rz resize
#define pb emplace_back
int INF=1e18;
int mod=1e9+7;
int N=150010;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;cin>>n;
if(n<=300){
vector<int> a(n),b(n),c(n);
for(int i=0;i<n;i++){
cin>>a[i]>>b[i]>>c[i];
}
int ans=-1;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if(i==j||j==k||i==k){
continue;
}
if(a[i]<=a[j]||a[i]<=a[k]||b[j]<=b[i]||b[j]<=b[k]||c[k]<=c[i]||c[k]<=c[j]){
continue;
}
ans=max(ans,a[i]+b[j]+c[k]);
}
}
}
cout<<ans<<endl;
return 0;
}
vector<int> a(n),b(n),c(n);
vector<vector<pii>> v(N+1);
for(int i=0;i<n;i++){
cin>>a[i]>>b[i]>>c[i];
v[a[i]].push_back({b[i],c[i]});
}
vector<int> rec(N+2,-INF),rec1(N+2,-INF);
int ans=-INF;
for(int i=1;i<=N;i++){
for(auto p:v[i]){
for(int j=p.first+1;j<=N+1;j++){
if(rec1[j]>p.second)ans=max(ans,i+j+rec1[j]);
}
}
for(auto p:v[i]){
rec[p.first+1]=max(rec[p.first+1],p.second);
}
for(int j=1;j<=N;j++){
rec[j]=max(rec[j],rec[j-1]);
}
for(auto p:v[i]){
if(rec[p.first]>p.second){
rec1[p.first]=max(rec[p.first],rec1[p.first]);
}
}
for(int j=N-1;j>=0;j--){
rec1[j]=max(rec1[j],rec1[j+1]);
}
}
if(ans<0){
cout<<-1<<endl;
}
else{
cout<<ans<<endl;
}
return 0;
}
# | 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... |