#include #include #include typedef struct fronta_s { int where; struct fronta_s *next; } fronta_t; fronta_t *fronta; void zarad (int pos) { fronta_t *p; fronta_t *new; new = malloc (sizeof (fronta_t)); new -> where = pos; if (!fronta || fronta -> where > pos) { new -> next = fronta; fronta = fronta -> next; return; } p = fronta; while (p -> next && p -> next -> where < pos) p = p -> next; new -> next = p -> next; p -> next = new; } int main(void) { int zad, zad_num; fronta = NULL; scanf("%d",&zad_num); for (zad = 1; zad <= zad_num; zad++) { int actual; /* actual time */ int num, presah; int zasahuje; zasahuje = 0; actual = 0; printf ("Zadani %d:\n", zad); while (1) { scanf ("%d %d", &num, &presah); printf ("Nacel %d %d\n", num, presah); /* Vypis */ printf ("%d\n", zasahuje); if (num == 0 && presah == 0) { printf ("Going out\n"); break; } actual += num; if (presah > 0) { zarad (actual + presah); zasahuje++; } printf ("Going in\n"); /* Remove all old entries */ while (fronta && (fronta -> where < actual)) { fronta_t *p; p = fronta; fronta = fronta -> next; free (p); zasahuje--; } } /* while (1) */ } return 0; }