ykmakuのブログ

競技プログラミングをがんばるブログ

ARC 088 D - Wide Flip

  • 問題

beta.atcoder.jp

  • 解法

前から順に見ていって...01...(または...10...)というように異なる文字に出会ったら"...0"か"1..."の長い方を反転すれば良い。反転したものの中で一番短いものが答えになる。

#include <iostream>
#include <string>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <numeric>
#include <cmath>

using namespace std;


int main()
{
	string s;
	cin >> s;
	int n = s.size();
	s = '.' + s;
	int ans = n;
	for(int i = 2; i <= n; i++){
		if(s[i] != s[i-1]){
			int x = max(i-1,n-i+1);
			ans = min(ans,x);
		}
	}
	cout << ans << endl;

	return 0;
}