Submission #466865

#TimeUsernameProblemLanguageResultExecution timeMemory
466865TlenekWodoruExam (eJOI20_exam)C++14
27 / 100
99 ms588 KiB
#include <bits/stdc++.h> using namespace std; int A[100009]; int B[100009]; pair<int,int>granica[100009]; int dp[2][100009]; map<int,int>miejsce; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n;cin>>n; for(int i=1;i<=n;i++) { cin>>A[i]; } for(int i=1;i<=n;i++) { cin>>B[i]; } map<int,int>M; M[2000000000]=0; for(int i=1;i<=n;i++) { granica[i].first=M.upper_bound(A[i])->second+1; M[A[i]]=i; } M.clear(); M[2000000000]=n+1; for(int i=n;i>=1;i--) { granica[i].second=M.upper_bound(A[i])->second-1; M[A[i]]=i; } M.clear(); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(A[i]==B[j]&&granica[i].first<=j&&j<=granica[i].second) { dp[i%2][j]=dp[i%2][j-1]+1; } else { dp[i%2][j]=max(dp[i%2][j-1],dp[(i-1)%2][j]); } } } cout<<dp[n%2][n]<<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...