Submission #1244171

#TimeUsernameProblemLanguageResultExecution timeMemory
1244171m5588ohammedTeam Contest (JOI22_team)C++20
27 / 100
122 ms10440 KiB
#include <bits/stdc++.h> #define endl "\n" #define mod 1000000007 using namespace std; #define int long long const int N=(1<<19); int Tree[N*2+5],valY[301],ansY[301],valZ[301]; int n,inf=3e10; array <int,3> arr[150001]; int calc(){ for(int i=0;i<=300;i++){ ansY[i]=valY[i]=-inf; valZ[i]=inf; } vector <array<int,2>> v[301]; for(int i=1;i<=n;i++){ v[arr[i][0]].push_back({arr[i][1],arr[i][2]}); } int mx=-1; for(int x=0;x<=300;x++){ for(auto [Yc,Zc]:v[x]){ for(int Y=Yc+1;Y<=300;Y++){ if(ansY[Y]>Zc&&ansY[Y]>valZ[Y]) mx=max(mx,ansY[Y]+Y+x); } } for(auto [Yc,Zc]:v[x]){ valY[Yc]=max(valY[Yc],Zc); valZ[Yc]=min(valZ[Yc],Zc); for(int Y=Yc+1;Y<=300;Y++){ ansY[Y]=max(ansY[Y],valY[Yc]); } } } return mx; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n; for(int i=1;i<=n;i++){ cin>>arr[i][0]>>arr[i][1]>>arr[i][2]; } int ans1=calc(); for(int i=1;i<=n;i++) swap(arr[i][1],arr[i][2]); cout<<max(ans1,calc()); }
#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...