Submission #588449

#TimeUsernameProblemLanguageResultExecution timeMemory
588449dozerExam (eJOI20_exam)C++14
13 / 100
345 ms197584 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define sp " " #define endl "\n" #define fileio() freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout) #define fastio() cin.tie(0), ios_base::sync_with_stdio(0) #define N 5005 #define pii pair<int, int> #define st first #define nd second #define modulo 1000000007 #define LOGN 18 #define int long long int a[N], b[N]; int dp[N][N]; map<int, int> val; int f(int i, int j) { if (i == 0 || j == 0) return 0; if (dp[i][j] != -1) return dp[i][j]; int ans = f(i, j - 1); if (b[j] == a[i]) ans++; ans = max(ans, f(i - 1, min(j, i - 1))); return dp[i][j] = ans; } int32_t main() { fastio(); memset(dp, -1, sizeof(dp)); int n; cin>>n; set<int> s; for (int i = 1; i <= n; i++) { cin>>a[i]; s.insert(a[i]); } int cntr = 1; for (auto i : s) { val[i] = cntr; cntr++; } for (int i = 1; i <= n; i++) a[i] = val[a[i]]; for (int i = 1; i <= n; i++) { cin>>b[i]; b[i] = val[b[i]]; } cout<<f(n, n)<<endl; cerr<<"time taken : "<<(float)clock() / CLOCKS_PER_SEC<<" seconds\n"; }
#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...