Submission #634568

#TimeUsernameProblemLanguageResultExecution timeMemory
634568Darren0724Team Contest (JOI22_team)C++17
8 / 100
2067 ms12156 KiB
#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 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...