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. vector<int> ricordaS1(N);
  10. vector<int> ricordaS2(N);
  11.  
  12. for (int i = 0; i < N; i++) {
  13. ricordaS[i] = S[i];
  14. ricordaS1[i] = S[i];
  15. ricordaS2[i] = S[i];
  16. }
  17.  
  18. for (int i = 1; i < N; i++) {
  19. if (S[i] % 2 == S[i - 1] % 2) {
  20. cambia++;
  21. S[i]++;
  22. }
  23. }
  24.  
  25. int ricordaicambi = cambia;
  26. cambia = 0;
  27.  
  28.  
  29. for (int i = N - 1; i > 0; i--) {
  30. if (ricordaS[i] % 2 == ricordaS[i - 1] % 2) {
  31. cambia++;
  32. ricordaS[i - 1]++;
  33. }
  34. }
  35.  
  36. if (ricordaicambi <= cambia) {
  37. cambia = ricordaicambi;
  38. }
  39.  
  40. int ricorda = cambia;
  41. cambia = 0;
  42.  
  43. for (int i = 2; i < N-1; i++) {
  44. if (ricordaS1[i] % 2 == ricordaS1[i - 1] % 2) {
  45. cambia++;
  46. ricordaS1[i]++;
  47. }
  48. }
  49. if (ricordaS1[0] % 2 == ricordaS1[1] % 2) {
  50. cambia++;
  51. ricordaS1[0]++;
  52. }
  53. if (ricordaS1[N-1] % 2 == ricordaS1[N-2] % 2) {
  54. cambia++;
  55. ricordaS1[N-1]++;
  56. }
  57.  
  58. int ricorda2 = cambia;
  59. cambia = 0;
  60.  
  61. for (int i = N - 2; i > 1; i--) {
  62. if (ricordaS2[i] % 2 == ricordaS2[i - 1] % 2) {
  63. cambia++;
  64. ricordaS2[i - 1]++;
  65. }
  66. }
  67.  
  68. if (ricordaS2[0] % 2 == ricordaS2[1] % 2) {
  69. cambia++;
  70. ricordaS2[0]++;
  71. }
  72. if (ricordaS2[N-1] % 2 == ricordaS2[N-2] % 2) {
  73. cambia++;
  74. ricordaS2[N-1]++;
  75. }
  76. if (ricorda2 <= cambia) {
  77. cambia = ricorda2;
  78.  
  79. }
  80. if (ricorda <= cambia) {
  81. cambia = ricorda;
  82.  
  83. }
  84.  
  85. return cambia;
  86. }
  87.  
  88. int main() {
  89. int N; cin >> N;
  90.  
  91. vector<int> S(N);
  92.  
  93. for (auto &s: S) {
  94. cin >> s;
  95. }
  96.  
  97. cout << traffico(N, S) << endl;
  98. }
Success #stdin #stdout 0s 5288KB
stdin
8
2 4 6 8 10 12 14 16
stdout
4