Submission #576674

#TimeUsernameProblemLanguageResultExecution timeMemory
576674vqpahmadExam (eJOI20_exam)C++14
12 / 100
1108 ms524288 KiB
#include <bits/stdc++.h> #define ll long long #define endl '\n' #define all(a) a.begin(),a.end() #define mod (ll)(10000007) using namespace std; const int mx = 1e6 + 15; vector<int> a; vector<int> b; int solve(int s, int e){ if (e-s<=1) return 0; map<int,int> mp; int mid = (s+e)/2; int mx = -1; int cnt = 0; for (int i = mid-1;i>=s;i--){ mp[b[i]]++; if (b[i]<=mx && binary_search(a.begin()+mid,a.begin()+e,b[i])){ cnt+=mp[b[i]]; } else if (mp[b[i]]>cnt&&binary_search(a.begin()+mid,a.begin()+e,b[i])){ cnt = mp[b[i]]; mx = b[i]; } } int p = s; for (int i=mid;i<e;i++){ if (a[i]==mx){ p = i; break; } } return max(solve(s,mid)+solve(mid,e),cnt+solve(p,e)); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector<pair<int,int>> ab(n); a.resize(n); b.resize(n); bool flag = 1; bool ans = 0; for (int i=0;i<n;i++){ cin >> ab[i].first; a[i] = ab[i].first; } for (int i=0;i<n;i++){ cin >> ab[i].second; b[i] = ab[i].second; if (i){ if (ab[i-1].second!=ab[i].second) flag = 0; } } for (int i=0;i<n;i++){ if (ab[i].first==ab[i].second) ans = 1; } if (flag&&ans) { int cnt =0; for (int i=0;i<n;i++){ if (ab[i].first==ab[i].second){ int p = i; while (ab[p].first<=ab[i].second){ cnt++; p--; if (p==-1) break; } p = i+1; if (p!=n){ while (ab[p].first<=ab[i].second){ cnt++; p++; if (p==n) break; } } i = p-1; } } cout << cnt ; } else { cout << solve(0,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...