卡片占卜
题号:NC53269
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

译自 JOISC 2015 Day1 T4「IOIOI カード占い / IOIOI Cards
K理事长是占卜好手,他精通各种形式的占卜。今天,他要用正面写着I,背面写着O的卡片占卜一下日本IOI国家队的选手选择情况。
占卜的方法如下:
  1. 首先,选取五个正整数A,B,C,D,E;
  2. 然后,拿出A+B+C+D+E张卡片摆成一排,从左至右摆成A张正面,B张反面,C张正面,D张反面,E张正面的形式。也就是说,从左到右依次摆A张I,B张O,C张I,D张O,E张I;
  3. 再从预先确定的N种操作中选择1种以上,然后按照自己喜欢的顺序进行操作,同样的操作可以进行1次及以上。第i种操作是「把从左到右第L_i张卡片到第R_i张卡片(包括两端)翻过来」,因为需要用手操作,所以翻1张牌需要花费1秒,完成一次操作需要花费秒;
  4. 操作后,如果所有牌都是正面朝上的,占卜就结束了。
因为这种占卜比较费时,所以K理事长在占卜之前想知道占卜能否结束,如果能结束,他想知道占卜的最小耗时。

输入描述:

第一行,五个正整数A,B,C,D,E,意义如题目描述;
第二行,一个正整数N,意义如题目描述;
接下来N行描述操作,一行两个正整数L_i,R_i,意义如题目描述。

输出描述:

输出一行,如果占卜能够结束,则输出一个正整数,表示占卜的最小耗时;如不能,输出-1。
示例1

输入

复制
1 2 3 4 5
3
2 3
2 6
4 10

输出

复制
12

说明

最初的卡片序列为IOOIIIOOOOIIIII;
先进行第二个操作,卡片序列变为IIIOOOOOOOIIIII,花费5秒;
再进行第三个操作,卡片序列变为IIIIIIIIIIII,这个操作花费7秒,一共花费12秒。
可以证明,12秒为占卜的最小耗时,因此输出12。
示例2

输入

复制
1 1 1 1 1
1
1 1

输出

复制
-1

备注:

对于全部测试点,满足

CC-BY-SA,感谢LOJ分享,译文来自  https://loj.ac/problem/2997