제출 #1315264

#제출 시각아이디문제언어결과실행 시간메모리
1315264vtnooCat Exercise (JOI23_ho_t4)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h> #define L(i, j, k) for(int i = (j); i <= (k); i++) #define R(i, j, k) for(int i = (j); i >= (k); i--) #define ll long long #define sz(a) ((int) a.size()) #define all(a) a.begin(), a.end() #define vi vector<ll> #define pb emplace_back #define me(a, x) memset(a, x, sizeof(a)) #define fst first #define snd second #define ii pair<int, int> using namespace std; const int LOG=18; const int MAXN=2e5+5; int P[MAXN],A[MAXN],B[MAXN],dp[MAXN],n; int f(int pos,vector<bool>used){ii ul={0,-1},ur=ul; R(i,pos-1,0){if(used[i])continue; ul=max(ul,{P[i],i}); } L(i,pos+1,n-1){if(used[i])continue; ur=max(ur,{P[i],i}); } used[pos]=true; if(ul.snd<0&&ur.snd<0){ return 0; } auto backup=used; int left=-1,right=left; if(ul.snd!=-1)left=f(ul.snd,backup)+abs(ul.snd-pos); if(ur.snd!=-1)right=f(ur.snd,backup)+abs(ur.snd-pos); return max(left,right); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n; L(i,0,n-1){ cin>>P[i]; } L(i,0,n-2){ cin>>A[i]>>B[i]; } int pos=max_element(P,P+n)-P; //~ cout<<pos<<endl; cout<<f(pos,vector<bool>(n,false))<<endl; }
#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...