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
#include <iostream>
#include <algorithm>

using namespace std;

int main(int argc, char **argv)
{
	int n, m;
	int *b, *d, *a, *cur;
	
	cin >> n;
	cin >> m;
	b = new int[m];
	d = new int[m];
	a = new int[n];
	cur = new int[n];

	for(auto i = 0; i < n; i++)
		cin >> a[i];
	for(auto i = 0; i < m; i++)
	{
		cin >> d[i];
		cin >> b[i];
	}
	for(int i = 0; i < n; i++)
		cur[i] = d[0]*a[i];
	for(auto i = 0; i < m-1; i++)
	{
		int sum = 0;
		for(auto j = 0; j < n; j++)
		{
			sum += max(0, cur[j] - b[i]); 
			cur[j] = min(cur[j], b[i]);
			cur[j] += (d[i+1] - d[i]) * a[j];
		}
		cout << sum << endl;
	}
	//for i=m
	int sum = 0;
	for(auto j = 0; j < n; j++)
		sum += max(0, cur[j] - b[m-1]); 
	cout << sum << endl;

	free(b); free(d); free(a); free(cur);
	return 0;
}