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.  
  12. for i:=2 to N-2 do
  13. if (S[i] mod 2=S[i-1] mod 2) then begin cambia:=cambia+1; S[i]:=S[i]+1; end;
  14. cambia:=cambia+2;
  15. for i:=0 to N-1 do write(S[i],' '); writeln;
  16. ricordaicambi:=cambia; cambia:=0;
  17. for i:=N-1 downto 1 do
  18. if (ricordaS[i] mod 2=ricordaS[i-1] mod 2) then begin cambia:=cambia+1; ricordaS[i-1]:=ricordaS[i-1]+1; end;
  19. if ricordaicambi<cambia then cambia:=ricordaicambi;
  20. for i:=0 to N-1 do write(ricordaS[i],' '); writeln;
  21. traffico:=cambia;
  22. end;
  23.  
  24.  
  25.  
  26. begin
  27. readln(N);
  28. for i:=0 to N-1 do read(S[i]);
  29. readln;
  30. writeln(traffico(N,S)) ;
  31. end.
  32.  
Success #stdin #stdout 0.01s 7928KB
stdin
7
2 2 1 2 2 2 2 
stdout
2 2 1 2 3 2 2 
2 3 2 3 2 3 2 
3