ARC 088 D - Wide Flip
- 問題
- 解法
前から順に見ていって...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; }