fork download
  1. program semafori;
  2. var N,i,pari, dispari : longint;
  3. S : array[0..1000000] of int64;
  4.  
  5. function traffico (N:longint; S:array of int64): longint;
  6. var cambia, ricordaicambi: int64;
  7. ricordaS : array[0..1000000] of int64;
  8. begin
  9. cambia:=0;
  10. for i:=0 to N-1 do ricordaS[i]:=S[i];
  11. if (N mod 2 = 0) then
  12. begin
  13. for i:=1 to N-1 do
  14. if (S[i] mod 2=S[i-1] mod 2) then begin cambia:=cambia+1; S[i]:=S[i]+1; end;
  15. end
  16. else
  17. begin
  18. if (N mod 2<>0) then
  19. begin
  20. for i:=1 to N-1 do
  21. if (S[i] mod 2=S[i-1] mod 2) then begin cambia:=cambia+1; S[i]:=S[i]+1; end;
  22. ricordaicambi:=cambia; cambia:=0;
  23. for i:=N-1 downto 1 do
  24. if (ricordaS[i] mod 2=ricordaS[i-1] mod 2) then begin cambia:=cambia+1; ricordaS[i-1]:=ricordaS[i-1]+1; end;
  25. writeln(cambia,' ',ricordaicambi);
  26. if ricordaicambi<cambia then cambia:=ricordaicambi;
  27.  
  28. end;
  29. end;
  30. traffico:=cambia;
  31.  
  32.  
  33. end;
  34.  
  35.  
  36.  
  37. begin
  38. readln(N);
  39. for i:=0 to N-1 do read(S[i]);
  40. readln;
  41. writeln(traffico(N,S));
  42.  
  43. end.
  44.  
Success #stdin #stdout 0.01s 7928KB
stdin
5
1 2 2 1 2





stdout
2 3
2