Submission #753726

#TimeUsernameProblemLanguageResultExecution timeMemory
753726emad234Exam (eJOI20_exam)C++17
14 / 100
1084 ms5804 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const ll mxN = 2e6 + 1; const ll mod = 1e9 + 7; ll a[mxN],b[mxN]; bool tk[mxN]; signed main() { ios::sync_with_stdio(false);cin.tie(0); cout.tie(0); ll n; cin >>n; priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>>q; for(ll i = 0;i < n;i++) cin >>a[i]; for(ll i = 0;i < n;i++) { cin >>b[i]; q.push({b[i],i}); q.push({b[i],n + (n - i)}); } ll bf = -1; ll l = n,r = n; ll diff = 0; ll ans = 0; while(q.size()){ pair<ll,ll> u = q.top(); q.pop(); for(ll i = l;i <= r;i++){ ans -= tk[i]; tk[i] = 0; if(b[i] == bf){ ans++; tk[i] = 1; } } // cout<<l<<' '<<r<<' '<<ans<<'\n'; // cout<<u.first<<' '<<u.second<<'\n'; l = n;r = n; diff = 0; ll num = 0; ll mx = 0; if(u.second < n){ for(ll i = u.second;i >= 0;i--){ mx = max(mx,a[i]); num += (b[i] == u.first); num -= tk[i]; if(mx == u.first){ if(num > diff){ r = u.second; l = i; diff = num; } } } }else{ u.second = abs(u.second - 2 * n); for(ll i = u.second;i < n;i++){ mx = max(mx,a[i]); num += (b[i] == u.first); num -= tk[i]; if(mx == u.first){ if(num > diff){ r = i; l = u.second; diff = num; } } } } bf = u.first; } for(ll i = l;i <= r;i++){ ans -= tk[i]; tk[i] = 0; if(b[i] == bf){ ans++; tk[i] = 1; } } // cout<<l<<' '<<r<<' '<<ans<<'\n'; cout<<ans; }
#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...