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.
*/
|