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
#include <stdio.h>
using namespace std;

int main(void){
    int n,m; //l arow i l koszen
    long long i,j;
    long long tmpdzien,tmpwysok,suma,tmp_od;
    scanf("%d%d",&n,&m);
    long long wzrost_aru[n], obecna_trawa[n];
    for(i=0;i<n;i++){
        scanf("%lld",&wzrost_aru[i]);
        obecna_trawa[i]=0;
    }
    for(i=0;i<m;i++){
	if(i==0) tmp_od=0;
	scanf("%lld %lld", &tmpdzien, &tmpwysok);
        //najpierw wzrost trawy
	suma=0;
        for(j=0;j<n;j++) {
	  obecna_trawa[j]+=(wzrost_aru[j]*(tmpdzien-tmp_od));
	  if(obecna_trawa[j]-tmpwysok>=0)
                suma+=(obecna_trawa[j]-tmpwysok);
          if(obecna_trawa[j]>tmpwysok)
                obecna_trawa[j]=tmpwysok;
        //potem koszenie
	}
        printf("%lld\n",suma);
        tmp_od=tmpdzien;
        }
    return 0;
}