summaryrefslogtreecommitdiffstats
path: root/inf/rtk/šolsko/4.c
blob: 1aa574cc4948581c5c2b7d3dc47e22e5833ee7ce (plain) (blame)
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
/*
opisna rešitev:

Naredimo seznam takih elementov:

enum dejanje {
	PRIHOD,
	ODHOD
};
struct dejanje {
	int čas;
	int dolžina;
	enum dejanje dejanje;
};

V zanki za vsak tovornjak v ta seznam dodamo ta dejanja. Najprej dodamo dejanje s .dejanje == PRIHOD in čas prihoda, nato pa dejanje s .dejanje == ODHOD, ki vsebuje vrednost prihoda, ki ji je prištet čas postanka. V vsak element seznama dodamo tudi dolžino tovornjaka.

Po velikosti uredimo glede na čas seznam dejanj s standardno funkcijo qsort(). Sortirna funkcija naj v obzir vzame tudi dejanje. Če je prvo dejanje ODHOD in drugo PRIHOD, imata pa isti čas, vrne -1 in s tem postavi ODHOD pred PRIHOD.

Deklariramo številsko spremenljivko maksdolžina in jo inicializiramo na 0, prav tako naredimo spremenljivko trenutnadolžina.

Gremo po urejenem seznamu v zanki in ko naletimo na element s .dejanje == PRIHOD, povečamo spremenljivko trenutnadolžina za .dolžina, ko naletimo na element s .dejanje == ODHOD, zmanjšamo spremenljivko trenutnadolžina za .dolžina. Vsakič na koncu programa v zanki preverimo, če je trenutnadolžina morebiti večja od maksdolžina, v tem primeru maksdolžina nastavimo na trenutnadolžina.

Ob koncu te zanke na standardni izhod izpišemo spremenljivko maksdolžina in končamo program.

*/