제출 #833587

#제출 시각아이디문제언어결과실행 시간메모리
833587vjudge1Exam (eJOI20_exam)C++17
14 / 100
661 ms524288 KiB
#include<bits/stdc++.h> using namespace std; int n; vector<int> h(100002), t(100002); map<pair<int, vector<int>>, int> m; int dp(int i, vector<int> v){ if(i == n) return 0; if(m.count({i, v})>0) return m[{i, v}]; int best=dp(i+1, v); vector<int> temp=v; for(int j=i; j<n; j++){ if(v[j] > t[i]) break; if(v[j] == t[i]){ while(j>i){ v[j]=t[i]; j--; } best=max(best, dp(i+1, v)+1); break; } } v=temp; for(int j=i; j>=0; j--){ if(v[j] > t[i]) break; if(v[j] == t[i]){ while(j<i){ v[j]=t[i]; j++; } best=max(best, dp(i+1, v)+1); break; } } m[{i, temp}]=best; return best; } int main(){ cin>>n; for(int i=0; i<n; i++){ cin>>h[i]; } for(int j=0; j<n; j++){ cin>>t[j]; } cout<<dp(0, h); }
#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...