#P618. 交换的轮数

交换的轮数

题目描述

给定一个只由 0011 构成序列,不断扫描序列,在每一轮扫描的过程中,如果发现有一些 1100 相邻,且 11 在前,00 在后,就在这一轮扫描后,同时将这些 11 与相邻的 00 交换。不断进行调整直到将所有的 00 都在序列的前一半,所有的 11 都在序列的后一半为止。

请计算需要进行多少轮交换才能完成调整。

输入格式

  • 若干 01 字符组成的一个序列

输出格式

  • 单个整数:表示交换的次数。
1100
3

数据范围

nn 表示序列的长度,

  • 30%30\% 的数据,1n201\leq n\leq 20
  • 60%60\% 的数据,1n50001\leq n\leq 5000
  • 100%100\% 的数据,1n300,0001\leq n\leq 300,000