#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; }
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; } |