program max2; // find the maximum number in constant time (CRCW) const n = 8; sharedvar values : array[1..n] of word; maxtable : array[1..n] of boolean; maxindex : word; var i : word; procedure init; var i : word; begin P := n * n; for i := 1 to n do // initailize the values // values[i] := i; writeln(values[i]); end; end init; procedure finish; begin writeln(values[maxindex]); // write the result // end finish; begin // main // the algorithm to find the maximum in constant time with CRCW model par i := 1 to n sync do maxtable[i] := true; end; par i := 0 to n * n - 1 sync do if values[i div n + 1] < values[i mod n + 1] then maxtable[i div n + 1] := false; end; end; par i := 1 to n sync do if maxtable[i] then maxindex := i; end; end; @CLOCK end max2.