Решение задачи Одномерный японский кроссворд с Codeforces

Без пояснения   Просмотров: 22


Не так давно Адалтик узнал, что такое японский кроссворд. Японский кроссворд — это изображение, представляемое таблицей размера a × b квадратных клеток, каждая из которых имеет либо белый, либо черный цвет. Слева от строк и сверху от столбцов располагаются числа, которые шифруют данную строку или столбец. Количество чисел показывает, сколько групп чёрных клеток находятся в соответствующей строке или столбце, а сами числа — сколько идущих подряд чёрных клеток содержит каждая из этих групп (подробнее про японский кроссворд можно прочесть в Википедии по ссылке https://ru.wikipedia.org/wiki/Японский_кроссворд).

Адалтик счел общий случай японского кроссворда слишком сложным и нарисовал строку из n клеток (то есть японский кроссворд размера 1 × n), которую он хочет зашифровать числами так же, как в японском кроссворде.
Помогите Адалтику найти числа, шифрующие нарисованную им строку кроссворда.

Код

#include <bits/stdc++.h>

using namespace std;

int main(){
	int n;
	cin >> n;
	string s;
	cin >> s;
	s += "w";

	vector<int> v;
	int ans = 0;
	for(int i = 0;i < s.size();i++){
		if(s[i] == 'B')
			ans++;
		else if(i != 0 && s[i-1] == 'B')
			v.push_back(ans), ans = 0;
	}

	cout << v.size() << endl;
	for(auto u : v)
		cout << u << " ";
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться