Logo
(追記) (追記ここまで)

24381번 - Равномерен низ 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB74457.143%

문제

Разглеждаме низове, съставени от два знака ‘0’ и ‘1’. Един такъв низ наричаме равномерен, ако започва с единица, няма съседни единици, броят на единиците не надминава броя на нулите и дължините на поднизовете от съседни нули се различават най-много с 1, например равномерни низове са ‘10001001000’, ‘1010’ и ‘101010100100100‘, а ‘0’, ‘011‘, ‘101001000’ – не са.

Казваме, че за един низ извършваме циклично изместване, ако първият му елемент го преместим на последно място. Например ‘10010’ → ‘00101’. Цикличното изместваме може да извършваме последователно многократно. Например след трикратно циклично изместване от ‘10010’ получаваме ‘10100’.

За даден равномерен низ разглеждаме операцията редукция, която извършва следното:

  • Премахва единиците.
  • Всеки подниз от нули (от първоначално дадения низ) от вид, който се среща по рядко се заменя с 1, а всеки подниз от нули от другия вид се заменя с 0. Ако двата вида поднизове от нули се срещат еднакво често, тогава по-късият се заменя с 1, а по-дългия – с 0.
  • Ако полученият низ съдържа поне една единица, извършва се циклично изместване (еднократно или многократно), докато за първи път се получи низ с 1 на първо място.

Примери:

  1. ‘1000100100’ се редуцира към ‘100’;
  2. ‘10001001000100’ се редуцира към ‘1010’ (тук е приложено циклично изместване);
  3. ‘100010010010001000’ се редуцира към ‘11000’ (тук е приложено циклично изместване);
  4. ‘1001000’ се редуцира към ‘10’.
  5. ‘100’ се редуцира към ‘0’.

Виждаме от примерите, че след редукция на равномерен низ, в някои случаи отново се получава равномерен низ, а в други случаи - не е така.

Напишете програма niz, която въвежда низ от нули и единици и намира след колко пъти последователно прилагане на операцията редуциране, низът който се е получил не е равномерен.

입력

От първият рдаед на стандартния вход се въвежда низ от нули и единици. Дължината на низа не надминава 500 000.

출력

На един ред на стандартния изход изведете цяло число и низ, отделени с един интервал. Числото трябва да е равно на броя пъти на последователно прилагане на операцията редуциране до първото получаване на низ, който не е равномерен. Низът трябва да е полученият низ, който не е равномерен. Ако този низ има повече от 50 знака, изведете само първите му 50 знака.

제한

예제 입력 1

10010100

예제 출력 1

2 0

예제 입력 2

1010010100

예제 출력 2

2 00

예제 입력 3

1011

예제 출력 3

0 1011

힌트

Обяснение на пример едно: 10010100 → 100 → 0

Обяснение на пример две: 1010010100 → 1010 → 00

Обяснение на пример три: Входният низ не е равномерен.

출처

Olympiad > International Autumn Tournament in Informatics > 2013 > Group C 2번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /