Max_Leb

Untitled

Jan 29th, 2022
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int length;
  4. int result;
  5.  
  6. void remove(int arr[], int left, int right, int size){
  7. int amount = right - left + 1;
  8. for (int i = right + 1; i < size; ++i){
  9. arr[i - amount] = arr[i];
  10. }
  11. length -= amount;
  12. result += amount;
  13. }
  14.  
  15. int main() {
  16. int n;
  17. std::cin >> n;
  18. length = n;
  19. int numbers[n];
  20. for (int i = 0; i < n; ++i){
  21. std::cin >> numbers[i];
  22. }
  23.  
  24. int del[n];
  25. int index = 0, flag = 0;
  26.  
  27. int length_before = -1;
  28.  
  29. while(length_before != length){
  30. length_before = length;
  31. flag = 0;
  32. index = 0;
  33. for (int i = 1; i < length; ++i){
  34. if (numbers[i] == numbers[i-1]){
  35. del[index++] = i - 1;
  36. flag = 1;
  37. if (i == length - 1){
  38. del[index++] = i;
  39. if (del[index - 1] - del[0] + 1 >= 3){
  40. remove(numbers, del[0], del[index-1], length);
  41. break;
  42. }
  43. else{
  44. flag = 0;
  45. index = 0;
  46. }
  47. }
  48. }
  49. else{
  50. if (flag){
  51. del[index++] = i - 1;
  52. if (del[index - 1] - del[0] + 1 >= 3){
  53. remove(numbers, del[0], del[index-1], length);
  54. break;
  55. }
  56. else{
  57. flag = 0;
  58. index = 0;
  59. }
  60.  
  61. }
  62. }
  63. }
  64. }
  65.  
  66. std::cout << result;
  67.  
  68.  
  69.  
  70.  
  71. return 0;
  72. }
  73.  
Advertisement
Add Comment
Please, Sign In to add comment