Предмет: Информатика, автор: Аноним

Синие и красные
Дана цепочка, состоящая из синих (B) и красных (R) точек. Нужно удалить наименьшее одинаковое количество синих и красных точек так, чтобы сначала шли только синие, а потом – только красные.

Входные данные

Входная строка содержит только символы 'B' и 'R' без пробелов.

Выходные данные

Нужно вывести полученную цепочку, в которой сначала идут только синие точки, а потом – только красные. Во второй строке нужно вывести количество удалённых (синих и красных) точек.

Примеры
Ввод
Вывод
BBBRBBRBRBRRRRRR
BBBBBRRRRRRR
4

Ответы

Автор ответа: axatar
5

Ответ:

#include<bits/stdc++.h>

using namespace std;

int main() {

    string s, o; cin>>s;

   int n = s.length(), l = -1, r = n, ans = 0;

   vector<bool> v(n);

    while(l < r)

   {

       while(l < n && s[++l] != 'R');

       while(r >= 0 && s[--r] != 'B');

       if(l <= r) v[l] = v[r] = 1, ans ++;

   }

    for(int i = 0; i < n; i++)

       if(!v[i])  cout<<s[i];

   cout<<endl<<ans*2<<endl;

   return 0;

}

Похожие вопросы