fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int traffico(int N, vector<int>S) {
  7. int cambia = 0;
  8. vector<int> ricordaS(N);
  9.  
  10. for (int i = 0; i < N; i++) {
  11. ricordaS[i] = S[i];
  12. }
  13.  
  14. for (int i = 2; i < N-1; i++) {
  15. if (S[i] % 2 == S[i - 1] % 2) {
  16. cambia++;
  17. S[i]++;
  18. }
  19. }
  20. if (S[0] % 2 == S[1] % 2) {
  21. cambia++;
  22. S[0]++;
  23. }
  24. if (S[N-1] % 2 == S[N-2] % 2) {
  25. cambia++;
  26. S[N-1]++;
  27. }
  28.  
  29. int ricordaicambi = cambia;
  30. cambia = 0;
  31.  
  32. for (int i = N - 2; i > 1; i--) {
  33. if (ricordaS[i] % 2 == ricordaS[i - 1] % 2) {
  34. cambia++;
  35. ricordaS[i - 1]++;
  36. }
  37. }
  38.  
  39. if (ricordaS[0] % 2 == ricordaS[1] % 2) {
  40. cambia++;
  41. ricordaS[0]++;
  42. }
  43. if (ricordaS[N-1] % 2 == ricordaS[N-2] % 2) {
  44. cambia++;
  45. ricordaS[N-1]++;
  46. }
  47. if (ricordaicambi <= cambia) {
  48. cambia = ricordaicambi;
  49.  
  50. }
  51.  
  52. return cambia;
  53. }
  54.  
  55. int main() {
  56. int N; cin >> N;
  57.  
  58. vector<int> S(N);
  59.  
  60. for (auto &s: S) {
  61. cin >> s;
  62. }
  63.  
  64. cout << traffico(N, S) << endl;
  65. }
Success #stdin #stdout 0.01s 5276KB
stdin
7
2 2 1 2 1 2 2
stdout
2