TLEしてしまいます。これは、割り当てた値をvectorから取り出すのに時間がかかっているからです。int>を使ってみましょう。0;}pairはfirstでソートされ、同じ値のpairが複数あればsecondの値でそれらの順番が決まります。なり、満点を獲得できました。なんか冗長じゃない?vectorを2つとmap、さらにあまり意味のないbeforeなどの一時的な変数など、このコードはまだまだ冗長です。きれいに書けないでしょうか?実は、mapは常にkeyでソートされた状態になっています。最初からmapに入れ、上から順番に値を割り当てていけばいいことになります。...ん?順番に?mapはインデックスの代わりにkeyを渡して値を参照していました。やって順番に値を取り出せばいいでしょうか?そこで、イテレータ(iterator)を使います。iteratorは、連続に格納されているデータにひとつずつアクセスする方法のことです。到達するまで順番にデータを読んでいく、という仕組みになっています。これで、コードもすっきりしましたね!なかなか難しいですが、ゆっくりマスターしたいなと思ったのでした。コメントをキャンセルメールアドレスが公開されることはありません。