1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.io.*;
import java.util.StringTokenizer;

/**
 * Created by gmatuszewski on 28.09.2015.
 */
public class sia {

	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

		sia(reader, writer);

		writer.close();
		System.exit(0);
	}

	public static void sia(BufferedReader reader, BufferedWriter writer) throws IOException {
		StringTokenizer st;

		st = new StringTokenizer(reader.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());

		int[] growth = new int[n];
		long[] fields = new long[n];

		st = new StringTokenizer(reader.readLine());
		for (int i = 0; i < n; i++) {
			growth[i] = Integer.parseInt(st.nextToken());
		}

		long prevDay = 0;

		while (m-- > 0){
			st = new StringTokenizer(reader.readLine());
			long sum = 0;

			long day = Long.parseLong(st.nextToken());
			long b = Long.parseLong(st.nextToken());

			for (int i = 0; i < fields.length; i++) {
				// update grass hight
				fields[i] += (day - prevDay) * growth[i];
				// trim grass
				sum += Math.max(0, fields[i] - b);
				fields[i] = Math.min(fields[i], b);
			}
			prevDay = day;

			writer.write(Long.toString(sum));
			writer.newLine();
		}

		writer.flush();
	}
}