QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100
[-6]

# 5096. 千百

统计

题目背景

千百次轰击,千百场碰撞,坚固的二〇一号大型引力子加速器完好如初。这是它的第千百个实验……

加速器中被高频扰动的引力场激发出 n 个引力子。你们的实验目标是使得它们同时存在 1012 秒。

n 个引力子环状均匀地排列在加速器中。每个引力子拥有一定的引力焓,代表着它的能量。引力焓是一个离散的标量。不同于热力焓值,引力焓定义在整数域内,也就是说,它是可负的。当两引力子距离较近时,若它们的引力焓乘积非负,它们就会互相吸引、迅速湮灭;反之,当引力焓乘积为负,两粒子将会相斥、达到相对稳定的共存态。引力子独立存在时寿命很长,也就是说,这 n 个引力子能稳定地共存 1012 秒,当且仅当任意相邻的两个引力子不会湮灭。你们需要在引力子被激发后、它们湮灭前的极短时间内,通过若干次干涉改变这些引力子的引力焓,从而使得它们稳定地共存。

题目描述

现在,我们量化地描述这个实验。引力子排成环状,我们顺时针地给这些引力子编号,从 0n1。也就是说,i 号引力子会和 (i1)mod 以及 (i+1)\bmod n 号相邻。初始时,i 号引力子的引力焓为 a_i 个单位。你们需要使得对于所有的 i\in [0,n)a_i\times a_{(i+1)\bmod n} <0。为了达到目的,你们可以进行若干次操作。每次操作时,你们可以选取一个引力子进行干涉。假如你们干涉的是 i 号引力子,那么这会使得 a_{(i-1)\bmod n}a_{(i+1)\bmod n} 同时减去 a_i,然后使 a_i 变为 -a_i。你们不能同时干涉两个粒子。而你,需要计算出最少需要进行多少次这样的干涉。

不出意外地,接下来是你们遇到的意外。你们的实验在不可抗拒因素作用下被干扰了。具体来说,你们激发的引力子中会有相邻的两个 p 号和 (p+1)\bmod n 号,意外地同时增加 v 的引力焓值。你们对干扰进行了预测,得到了 m 种可能的情况。现在的你,需要对每种情况计算如果初始状态如上变化,最少需要进行多少次干涉。

当然,实验总有失败的可能性。如果你发现不可能通过干涉达到目标,也请你报告无解。

输入格式

输入文件有若干行,每行若干整数,同行相邻整数间用一个空格隔开。

第一行包含两个数 n,m

第二行包含 n 个数,第 i 个数为 a_{i-1}

接下来 m 行,每行两个数 p,v,表示一次干扰预测。

输出格式

输出 m 行,每行一个整数。第 i 行的整数为你对第 i 次预测的答复。如果该预测下可以达到目标,请你输出最少的干涉次数,否则请你输出 -1 以表明无解。

输入输出样例

样例输入 #1

4 2
-1 5 5 3
0 2
2 -2

样例输出 #1

5
3

样例解释 #1

第二次猜测对应的一种方案:

    -1 +5 +3 +1
->  -1 +2 -3 -2
->  +1 +2 -1 +2
->  -1 +1 -1 +1

样例输入 #2

5 2
0 0 0 0 0
1 2
0 1

样例输出 #2

-1
-1

样例输入 #3

20 10
-25 33 -28 39 -2 33 -23 27 24 9 -38 -14 10 -24 -4 29 -9 25 17 37
12 -25
10 -24
16 1
2 47
0 -32
13 21
19 0
5 -23
3 24
1 41

样例输出 #3

20
23
21
22
21
20
21
21
22
22

数据范围

千百个实验,千百颗粒子,千百次猜测……一千个一百,就是你们的极限。

本题采用捆绑测试,分为以下若干个子任务,每个子任务对应不同的数据范围限制。若你通过一个子任务内的所有测试点,则你可以得到该子任务对应的得分。

  • Subtask 1 (10 pts): 1 \le n,m \le 50|v|,|a_i| \le 50
  • Subtask 2 (20 pts): 1 \le n,m \le 400
  • Subtask 3 (30 pts): 1 \le n,m \le 10^5v=0
  • Subtask 4 (40 pts): 1 \le n,m \le 10^5

此外,保证所有测试点满足:n \ge 30 \le p < n|v|,\sum_{i=0}^{n-1} |a_i| \le 10^8,所有输入的数均为整数。