【无标题】

这天,懋懋的女票又给他们投喂糖果啦!但这次zyw不在,只有易大师和懋懋独享这些糖果,它们被懋懋等分成了数量为 n 的两堆糖果 A = [a1, a2, ..., an] 和 B = [b1, b2, ..., bn],其中 ai 和 bi 为第 i 包糖果的口味(你不知道?糖果口味可多了,有苹果、草莓、菠萝、覆盆子等等)。

现在懋懋想考考你,若易大师吃完前 x 包糖果且懋懋也吃完前 y 包糖果条件下,它们尝过的糖果口味是一样的嘛?等等!zyw表示没吃到糖果很委屈,他想为这题增加难度——如果我重复问 q 次呢?你开始挠头......

Input

输入共 q + 3 行。

第一行输入两个正整数 n 和 q (1 ≤ n, q ≤ 100 000) 由空格键隔开,表示糖果数量和询问次数。

第二行输入 n 个正整数 a1, a2, ..., an 由空格键隔开,表示易大师的 n 包糖果,其中第 i 包糖果的口味是 ai (1 ≤ ai ≤ 100 000)。

第三行输入 n 个正整数 b1, b2, ..., bn 由空格键隔开,表示懋懋的 n 包糖果,其中第 i 包糖果的口味是 bi (1 ≤ bi ≤ 100 000)。

接下来 q 行,每行输入两个正整数 xi, yi (1 ≤ xi, yi ≤ n),表示询问若易大师吃完前 x 包糖果且懋懋也吃完前 y 包糖果条件下,他们吃过的糖果口味是否相同?

Output

请输出 q 行,每行表示询问答案,若他两吃过的口味相同则输出YES否则请输出NO,注意换行。

Example

input

Copy

5 3
1 2 3 4 5
1 3 2 4 3
1 2
3 3
4 5

output

Copy

NO
YES
YES

Note

对于第一个询问,易大师吃过的糖果口味是 {1},懋懋吃过的口味是 {1, 3} 因此不相同,回答NO;但对于第二个询问,他们吃过的口味都是 {1, 2, 3} 因此回答YES。

 

找当前a数组前k个数在b数组中最后出现的位置 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <set>
#include <stack>
using namespace std;
#define int long long
typedef pair<int,int>PII;
constexpr int N=1e5+7;
int a[N],b[N],c[N],d[N];
bool st[N];
signed main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        cin>>b[i];
    }
    int l=0;
    for(int i=1;i<=n;i++){
        while(!st[a[i]]) l++,st[b[l]]= true;
        c[i]=l;
    }
    memset(st,0, sizeof st);
    l=0;
    for(int i=1;i<=n;i++){
        while(!st[b[i]]) l++,st[a[l]]= true;
        d[i]=l;
    }
    while(m--){
        int x,y;
        cin>>x>>y;
        if(x>=d[y]&&y>=c[x]){
            cout<<"YES"<<endl;
        }
        else{
            cout<<"NO"<<endl;
        }
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q619718

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值