Submission #634523

#TimeUsernameProblemLanguageResultExecution timeMemory
634523Darren0724Team Contest (JOI22_team)C++17
27 / 100
556 ms8132 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=4000;

signed main(){
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n;cin>>n;
  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),rec1(N+2);
  int ans=-1;
  for(int i=1;i<=N;i++){
    for(auto p:v[i]){
      for(int j=p.first+1;j<=N;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=2;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]);
    }
    for(int j=1;j<=N;j++){
      cout<<rec[j]<<' ';
    }
    cout<<endl;
    for(int j=1;j<=N;j++){
      cout<<rec1[j]<<' ';
    }
    cout<<endl;*/
  }
  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...