#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define _ <<' '<<
#define print(x) cout<<#x<<": "<<(x)<<'\n'
int n, res=0;
vector<int> a, b, lf, rt, pref, p2;
stack<int> s;
int main(){
cin.tie(0)->sync_with_stdio(0);
cout.tie(0);
cin>>n;
a.resize(n);
b.resize(n);
lf.assign(n, 0);
pref=p2=rt=lf;
for (int i=0; i<n; i++) cin>>a[i];
for (int i=0; i<n; i++) cin>>b[i];
for (int i=0; i<n; i++) {
while (!s.empty() && a[s.top()]<=a[i]) s.pop();
if (s.empty()) lf[i]=0;
else lf[i]=s.top()+1;
if (a[i]==b[i]) ++pref[lf[i]];
s.push(i);
}
s={};
for (int i=n-1; i>=0; --i) {
while (!s.empty() && a[s.top()]<=a[i]) s.pop();
if (s.empty()) rt[i]=n-1;
else rt[i]=s.top()-1;
if (a[i]==b[i]) ++p2[rt[i]];
s.push(i);
}
s={};
int ctr=0, res=0;
for (int i=0; i<n; i++) {
ctr+=pref[i];
if (ctr) ++res;
ctr-=p2[i];
}
cout<<res<<'\n';
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |