program voteCount; var votes: array [0..4,1..3] of integer; choice: array[1..3] of integer; i,j : integer; cs : integer; function winner(elim : integer) : integer; var answer,i : integer; begin answer := 1; if elim = 1 then answer := 2; for i := 2 to 3 do if votes[elim,i] > votes[elim,answer] then answer := i; winner := answer; end; function loser(elim : integer) : integer; var answer,i : integer; begin answer := 1; if elim = 1 then answer := 2; for i := 2 to 3 do if (i <> elim) and (votes[elim,i] <= votes[elim,answer]) then answer := i; loser := answer; end; begin cs := 1; repeat for i := 0 to 3 do for j := 1 to 3 do votes[i,j] := 0; repeat readln(choice[1], choice[2], choice[3]); if choice[1] > 0 then begin votes[0,choice[1]] := votes[0,choice[1]] +1; for i := 1 to 3 do begin j := 1; if choice[1] = i then j := 2; votes[i][choice[j]] := votes[i][choice[j]] +1; end; end; until choice[1] <= 0; writeln('-------- election', cs:3); cs := cs+1; (* writeln(' 3-way', votes[0,1], votes[0,2], votes[0,3], winner(0)); writeln(' 1 elim', votes[1,1], votes[1,2], votes[1,3], winner(1)); writeln(' 2 elim', votes[2,1], votes[2,2], votes[2,3], winner(2)); writeln(' 3 elim', votes[3,1], votes[3,2], votes[3,3], winner(3)); *) writeln(' plurality winner', winner(0):3); writeln('exhaustive ballot', winner(loser(0)):3); writeln(' 12 primary', winner(loser(3)):3); writeln(' 13 primary', winner(loser(2)):3); writeln(' 23 primary', winner(loser(1)):3); until choice[1] < 0; end.