问题 5662 --元宵灯笼

5662: 元宵灯笼

时间限制: 2 Sec  内存限制: 256 MB
提交: 8  解决: 6
[提交][状态][命题人:]

题目描述

元宵佳节,道路两旁挂满了灯笼。

现在有一条道路,左右两侧各有 n 个灯笼。左侧的第 i 个灯笼高度为 a[i] ,右侧的第 i 个灯笼高度为 b[i] 。

小明想通过若干次操作,使得左右灯笼的某一区间 [l,r] 内的高度对应一致,即 ∀i∈[l,r] ,a[i]=b[i] 。操作方式如下:
1. 选择 [l,r] 区间内的一个长度为偶数的标记序列 p[1],p[2],...,p[k] (k为偶数),满足 l≤p[1]<p[2]<...<p[k]≤r 。
2. 将 a[p[1]],a[p[3]],...,a[p[k-3]],a[p[k-1]] 都增加 1 ,将 b[p[2]],b[p[4]],...,b[p[k-2]],b[p[k]] 都增加 1 。

共有 q 次询问,每次询问给定区间 [l,r] ,求最少需要多少次操作,使得左右灯笼的区间 [l,r] 内的高度对应一致。若无解,则输出 -1 。
每组询问间相互独立。

输入

第一行包含两个正整数 n,q (2≤n≤10^5, 1≤q≤10^5) ,表示一侧的灯笼数量和询问数。
第二行包含 n 个整数 a[1],a[2],...,a[n] ,表示左侧的灯笼高度。
第三行包含 n 个整数 b[1],b[2],...,b[n] ,表示右侧的灯笼高度。 
接下来 q 行,每行包含两个整数 l,r (1≤l<r≤n) ,表示询问的区间的端点。

输出

对于每组询问,输出一行,包含一个整数,表示最少需要多少次操作。若无解,则输出 -1 。
样例输入
Copy
8 5
0 1 2 9 3 2 7 5
2 2 1 9 4 1 5 8
2 6
1 7
2 4
7 8
5 8
样例输出
Copy
1
3
1
-1
-1

提示

样例解释
对于第一组数据 [2,6] ,可以选择编号序列 p[]={2,3,5,6} 进行操作,操作后
a[]={0,2,2,9,4,2,7,5}, b[]={2,2,2,9,4,2,5,8} ,满足条件。

对于第二组数据 [1,7] ,可以一次选择以下序列进行操作:
p[]={1,3,5,6}
p[]={1,7}
p[]={2,7}

对于第三组数据 [2,4] ,可以选择编号序列 p[]={2,3} 进行操作。

对于第四、五组数据,无法使得左右灯笼的区间 [l,r] 内的高度对应一致。

来源

[提交][状态]