topcoder SRM497

昨日のスルメ、div2の1000悔しかったからage。

#define rep(i,n) for(int i=0; i<n; i++)
#define rrep(i,o,n) for(int i = o; i < n; i++)
#define drep(i,n) for(int i = n; i >= 0; i--)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int minChanges(string S) {
	int n = S.size(), ans = 50, dp[50];
	rrep(i,1,n){
		rep(j,i) dp[j] = 0;
		rrep(j,i,n) drep(k,i-1){
			if (S[j] == S[k]){
				dp[k] = 1;
				rep(h,k) dp[k] = max(dp[k],dp[h]+1);
			}
		}
		ans = min(ans,max(i, n-i)-dp[i-1]);
	}
	return ans;
}

コーナーケースがあるかも知れへんけど、後2分あればsubmit出来てた・・・
1000を解けてる人のソース見てもほとんどみんな長ったらしくて、さらに悔しくなった・・・


まぁ、しゃーないか。