Предмет: Информатика,
автор: Аноним
Синие и красные
Дана цепочка, состоящая из синих (B) и красных (R) точек. Нужно удалить наименьшее одинаковое количество синих и красных точек так, чтобы сначала шли только синие, а потом – только красные.
Входные данные
Входная строка содержит только символы 'B' и 'R' без пробелов.
Выходные данные
Нужно вывести полученную цепочку, в которой сначала идут только синие точки, а потом – только красные. Во второй строке нужно вывести количество удалённых (синих и красных) точек.
Примеры
Ввод
Вывод
BBBRBBRBRBRRRRRR
BBBBBRRRRRRR
4
Ответы
Автор ответа:
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;
}
Похожие вопросы
Предмет: Русский язык,
автор: Ксенияиван
Предмет: Русский язык,
автор: Лера1273
Предмет: Русский язык,
автор: Vragon
Предмет: Математика,
автор: ленасладкого
Предмет: Информатика,
автор: nikitabukin9024