fork download
  1. program semafori;
  2. var N,i,pari, dispari : longint;
  3. S : array[0..1000000] of longint;
  4.  
  5. function traffico (N:longint; S:array of longint): longint;
  6. var cambia, ricordaicambi: longint;
  7. ricordaS : array[0..1000000] of longint;
  8. begin
  9. cambia:=0;
  10. for i:=0 to N-1 do ricordaS[i]:=S[i];
  11. for i:=1 to N-1 do
  12. if (S[i] mod 2=S[i-1] mod 2) then begin cambia:=cambia+1; S[i]:=S[i]+1; end;
  13. ricordaicambi:=cambia; cambia:=0;
  14. for i:=N-1 downto 1 do
  15. if (ricordaS[i] mod 2=ricordaS[i-1] mod 2) then begin cambia:=cambia+1; ricordaS[i-1]:=ricordaS[i-1]+1; end;
  16. if ricordaicambi<cambia then cambia:=ricordaicambi;
  17. traffico:=cambia;
  18. end;
  19.  
  20. begin
  21. readln(N);
  22. for i:=0 to N-1 do read(S[i]);
  23. readln;
  24. writeln(traffico(N,S));
  25.  
  26. end.
  27.  
Success #stdin #stdout 0.01s 6064KB
stdin
8
1 2 1 2 2 2 1 1
stdout
2