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
#include <stdio.h>
#include <stdlib.h>

//lista
struct lista{
	int wysokosc;
	int v_wzrostu;
	struct lista *next;
	};
typedef struct lista lista;

int main(void){
	int ile,koszenia;
	scanf("%d%d",&ile,&koszenia);
	//lista - wpisanie
	lista *poczatek;
	lista *biezacy=NULL;
	for(int i=0;i<ile;i++){
		lista *nowy=(lista*) malloc(sizeof(lista));
		scanf("%d",&nowy->v_wzrostu);
		nowy->wysokosc=0;
		if(biezacy) biezacy->next=nowy;
		else poczatek=nowy;
		biezacy=nowy;
		}
	//lista - wypisanie
	for(int i=0;i<koszenia;i++){
		int suma=0;
		int dzien,kosz;
		scanf("%d%d",&dzien,&kosz);
		biezacy=poczatek;
		while(biezacy){
			biezacy->wysokosc+=biezacy->v_wzrostu;
			if(biezacy->wysokosc>kosz){
				suma+=biezacy->wysokosc-kosz;
				biezacy->wysokosc=kosz;
				}
			biezacy=biezacy->next;
			}
		printf("%d\n",suma);
		}
	//lista - czyszczenie
	biezacy=poczatek;
	while(biezacy){
		lista *nastepny= biezacy->next;
		free(biezacy);
		biezacy = nastepny;
		}
	return 0;
	}