TopCoder Open 2014 Round1A Easy EllysSortingTrimmer

問題

文字列に対して次の操作が行える。
好きなiを決める。
先頭のi文字はそのままにして、次からのL文字を、アルファベットの小さい順にソートする。
残りの文字は捨てる。


与えられた文字列Sおよび整数Lについて、
この操作を好きなだけSに適用してできる文字列のうち辞書順で最小のものを求めよ。

制約条件

n≦50

方針

完成する文字はL文字。
(L+1文字以上の答えがあったとすると、i = 0でこの操作を行えば必ずよりよい答えが得られる)


後ろから毎回1文字ずつ削ってソートしていけばよい。
ソートをしない場所があったとすると、そこでソートしたとしても答えが悪くならないため。

ソースコード

class EllysSortingTrimmer {
	public:
	string getMin(string S, int L) {
		
		while(S.size() > L){
			
			sort(S.end() - L, S.end());
			sort(S.end() - L - 1, S.end() - 1);
			S.erase(S.end() - 1);
		}
		sort(all(S));
		return S;
	}
};