飞车党.

Description

有一个隧道,某一天一共有 n 辆车通过且都只通过一次。交通规章规定这个隧道里不能超车,因此在隧道的入口和出口都有监控,能记录下这些车出入隧道的顺序。

但总有一些法外之徒,喜欢飞车,这是很不好的行为。

规定如下:

如果车b 本来是排在车a的后面进入隧道

但隧道中进行了超车行为,于是车b先于车a出隧道了。

现在请求出一共多少辆车发生了超车行为,注意超过一辆车与超过多辆车,都只按一次计算。

即只需要有多少车发生了超车行为。

Format

Input

第一行一个整数n表示车辆的总数(2<=n<=1e5)

第二行n个整数 a_i(1<=a_i<=n)表示依次进入隧道的车辆的编号

第三行n个整数 b_i(1<=b_i<=n)表示依次离开隧道的车辆的编号

Output

输出一共有多少车辆违规了

Samples

输入数据 1

5
3 5 2 1 4
4 3 2 5 1

Copy

输出数据 1

2

Copy

输入数据 2

4
1 3 2 4
4 3 2 1

Copy

输出数据 2

3

Copy

Hint

编号为4与2的车,超车了。

#include<bits/stdc++.h>
using namespace std;
long long int d=1e7;
queue<int> q1,q2;
bool f[10000001],l[200005],op[2000009];
long long int z[1000001]={1},sd,g[100000],o[1000001],a[102102],mi;
long long int n,m,mo=1e9+7;
long long int s,k;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>mi;
        q1.push(mi);
    }
    for(int i=1;i<=n;i++){
        cin>>mi;
        q2.push(mi);
    }
    int h1=1,h2=1;
    while(h1<=n&&h2<=n){

        if(q1.front()!=q2.front()){
                if(l[q1.front()]==0){
                    l[q2.front()]=1;
                    s++;
                    q2.pop();
                    h2++;
                }
                else if(l[q1.front()]!=0){                    
                    q1.pop();
                    h1++;
                }            
        }
        else if(q1.front()==q2.front()){
            q1.pop();
            q2.pop();
            h1++;
            h2++;
        }        
    }    
    cout<<s;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值