MODULE MaxNiza4; (* Cetvrto resenje. Najbolje moguce: O(n) *) FROM InOut IMPORT WriteString, WriteInt,WriteCard,WriteLn; FROM FIO IMPORT File, Open, Close, RdInt,EOF; CONST MaxN = 10; TYPE Interval = [1..MaxN]; VAR Max, MaxDovde : INTEGER; i,d,Ood,Doo : Interval; X : ARRAY Interval OF INTEGER; f: File; brojOp : CARDINAL; N:CARDINAL; BEGIN WriteString(' Unos niza X '); WriteLn; brojOp := 0; f := Open('br1.txt'); N:=0; EOF:=FALSE; WHILE NOT EOF DO INC(N); X[N] := RdInt(f); WriteCard(N,1); WriteString(' - '); WriteInt(X[N],1); WriteLn; END; Close(f); Max := 0; MaxDovde := 0; FOR i := 1 TO N DO IF MaxDovde = 0 THEN d := i END; MaxDovde := MaxDovde + X[i]; INC(brojOp); IF MaxDovde < 0 THEN MaxDovde := 0 END; IF MaxDovde > Max THEN Ood := d; Doo := i; Max := MaxDovde END END; WriteLn; WriteString(' Maksimum je '); WriteInt(Max,3); WriteString(' u intervalu od '); WriteCard(Ood,3); WriteString(' do '); WriteCard(Doo,3); WriteLn; WriteString('Broj racunskih operacija: '); WriteCard(brojOp,1); WriteLn; END MaxNiza4.