反省会

というか、終わったので別に問題内容とか書いていいんですね。
Set2でした。750点問題は解いていませんというか、問題読んでさえいません。スルー。
250点問題ですが、1〜Mのintの配列を、引数のintの配列を使ってルールに従ってN回並べ替えなさい、というまあそれだけの問題で、問題自体は簡単だったんですが問題文が難しかったというか、英語は敵というか、結局id:shinichiro_hさんに読んでもらったというか…
もう説明するの面倒なのでコード貼っておこう。C++は自信ないのでDです。

class DeckShuffle{
	int[] getDeck(int n, int[] cs){
		int[] ret = cs;
		while (--n > 0){
			int[] ret0;
			foreach (i; cs)
				ret0 ~= ret[i-1];
			ret = ret0;
		}
		return ret;
	}
}

本来はシャッフルする配列の初期値は"1,2,3 ... m"なんですが、この配列に一回ルールを適用すると、引数として渡される配列になります。それなら初期値を渡される配列にしてやって、ルールの適用回数を一回減らせばいいじゃん、という感じで短く出来ると思います。
問題のサンプルだけ見ると、渡される配列が初期値かと思うんですね…勿論問題文が理解できていればそうは思わないはずなんですが、注目度が「英文<サンプル」なのでほげほげ。
上で「ザ・勘」とか言ってるのは、何故だかはよくわからないけれど、とりあえずN回じゃなくてN-1回だけ適用すればいいんじゃないか、とサンプル見ながら途中で思ったという、ただそれだけのことです。しかし何故だかよくわからないのにコード書いて、結局SystemTest通らなかったとかだと悲しいので、勘で書いたりはしませんでした。
何が言いたかったのかというと、所詮自分は使えない子、ということです。悲しいなあ…