TopCoder SRM 530 Div2 Easy GogoXBallsAndBinsEasy

問題

n個のビンがあり、それぞれにS[i]個のボールが入っている。
ボールを別のビンに移す操作を繰り返して、
それぞれのビンに入っているボールの個数T[i]が、
T[i]はS[i]を並べ替えたものであり、T[i]がソート済みの列になるようにする。


T[i]が与えられたとき、
全てのS[i]のうち、T[i]に至る操作の最小回数が最大になるようなS[i]の、
T[i]に至る操作の最小回数を求めよ。

制約条件

n≦10
T[i]≦10
T[i]の要素は全て異なる

方針

S[i]を全生成して数える。

ソースコード

class GogoXBallsAndBinsEasy {
	public:
	int solve(vector <int> T) 
	{
		vi t=T;
		int ans=0;
		do{
			int tmp=0;
			rep(i,t.size())tmp+=abs(T[i]-t[i]);
			ans=max(ans,tmp/2);
		}while(next_permutation(all(t)));
		return ans;
	}
};