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
var
  n, m : longint;
  i, j : longint;
  trawa, dpop : int64;
  licz, liczN : array[1..500000] of longint;
  d, b : array[1..500000] of longint;
  
begin
  for i := 1 to 500000 do
    begin
	  licz[i] := 0;
	  liczN[i] := 0;
	end;
  readln(n,m);
  for i := 1 to n do
    begin
      read(licz[i]);
	end;
  for i := 1 to m do
    begin
      trawa := 0;
	  read(d[i],b[i]);
	end;
  dpop := 0;
  for i := 1 to m do
    begin
	  trawa := 0;
      for j := 1 to n do
	    begin
		  liczN[j] := liczN[j] + ((d[i] - dpop) * licz[j]);
//		  writeln(b[i],':',liczN[j],':',d[i]-dpop);
	      if b[i] < liczN[j] then
		    begin
		      trawa := trawa + liczN[j] - b[i];
//			  writeln(trawa);
			  liczN[j] := b[i];
			end;
//	      dpop := d[i];
	    end;
	  dpop := d[i];
	  writeln(trawa);
	end;
end.