Submission #468054

#TimeUsernameProblemLanguageResultExecution timeMemory
468054StickfishExam (eJOI20_exam)C++17
12 / 100
97 ms1024 KiB
#include <iostream> #include <set> using namespace std; const int MAXN = 1e5 + 123; int a[MAXN]; int b[MAXN]; void solve_2(int n){ int cnt = 0; int isneeded = 0; int ans = 0; for(int i = 0; i < n; ++i){ if(a[i] == b[0]){ isneeded = 1; } if(a[i] > b[0]){ ans += cnt * isneeded; isneeded = 0; cnt = 0; } else { ++cnt; } } cout << ans + cnt * isneeded << endl; } void solve_4(int n){ } int dp_[MAXN]; int* dp = dp_ + 1; void solve_slow(int n){ for(int i = 0; i < n; ++i){ int mx = a[i]; for(int j = i; j >= 0; --j){ mx = max(mx, a[j]); int cnt = 0; //cout << "--- " << i << ' ' << j << " ---" << endl; //cout << mx << ": "; for(int k = j; k <= i; ++k){ if(b[k] == mx){ ++cnt; } //cout << b[k] << " "; } //cout << endl; dp[i] = max(dp[i], dp[j - 1] + cnt); } } cout << dp[n - 1]; } signed main(){ int n; cin >> n; for(int i = 0; i < n; ++i) cin >> a[i]; for(int i = 0; i < n; ++i) cin >> b[i]; bool sub2 = true; for(int i = 0; i < n; ++i){ if(b[i] != b[0]) sub2 = false; } if(sub2){ solve_2(n); return 0; } bool sub4 = true; set<int> st; for(int i = 0; i < n; ++i){ if(st.find(a[i]) != st.end()) sub4 = false; st.insert(a[i]); } if(sub4){ return 0; } solve_slow(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...