Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include <ext/pb_ds/tree_policy.hpp>
- #include <ext/pb_ds/assoc_container.hpp>
- using namespace std;
- using namespace __gnu_pbds;
- using ll = long long;
- #define pb push_back
- #define ff first
- #define ss second
- template <typename T> using orderedSet =
- tree<T, null_type, less<T>,
- rb_tree_tag, tree_order_statistics_node_update>;
- int main()
- {
- int n;
- scanf("%d",&n);
- int a[n+5],b[n+5];
- for(int i=1; i<=n; i++)
- scanf("%d",&a[i]);
- int pos[n+5];
- for(int i=1; i<=n; i++)
- {
- scanf("%d",&b[i]);
- pos[b[i]]=i;
- }
- int ans=0;
- orderedSet<int>st;
- st.insert(0);
- for(int i=1; i<=n; i++)
- {
- int x=pos[a[i]];
- auto p=st.upper_bound(x);
- int z=st.order_of_key(*p);
- if(z==0)
- st.insert(x);
- else
- {
- int y=st.size()-z;
- ans+=y;
- //cout<<a[i]<<": "<<st.size()<<" "<<z<<endl;
- st.insert(x);
- }
- }
- printf("%d",ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement