Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int length;
- int result;
- void remove(int arr[], int left, int right, int size){
- int amount = right - left + 1;
- for (int i = right + 1; i < size; ++i){
- arr[i - amount] = arr[i];
- }
- length -= amount;
- result += amount;
- }
- int main() {
- int n;
- std::cin >> n;
- length = n;
- int numbers[n];
- for (int i = 0; i < n; ++i){
- std::cin >> numbers[i];
- }
- int del[n];
- int index = 0, flag = 0;
- int length_before = -1;
- while(length_before != length){
- length_before = length;
- flag = 0;
- index = 0;
- for (int i = 1; i < length; ++i){
- if (numbers[i] == numbers[i-1]){
- del[index++] = i - 1;
- flag = 1;
- if (i == length - 1){
- del[index++] = i;
- if (del[index - 1] - del[0] + 1 >= 3){
- remove(numbers, del[0], del[index-1], length);
- break;
- }
- else{
- flag = 0;
- index = 0;
- }
- }
- }
- else{
- if (flag){
- del[index++] = i - 1;
- if (del[index - 1] - del[0] + 1 >= 3){
- remove(numbers, del[0], del[index-1], length);
- break;
- }
- else{
- flag = 0;
- index = 0;
- }
- }
- }
- }
- }
- std::cout << result;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment