第8回日本情報オリンピック 予選2

2008年12月23日
情報オリンピック日本委員会

問題
   コンテスト

解説

この問題を解くには次のようにいくつかの方法が考えられるが, 基本的に,ループなどのプログラムが書けるかどうかということを意図して出題されている.

考えられる方法の1つは,得点データを頭から見てゆき,そこまでの上位3人の得点を記憶しておく方法である. この方法の場合,新しいデータに対して,

という処理をすることになる.

得点データに現れる各得点が,その大学内で何位なのかを求める方法も考えられる. この場合,同じ大学内のすべての得点データのうち,注目したデータより大きい得点がいくつあるかを数えればよい. ただし,同点の場合にそれらを重複して数えたり数えもらしたりしないように,たとえば, 「同点の場合は,データの中で先に現れる人の方を上位とする」などと決めておく必要がある.

また,ソート(データを大きい順や小さい順などに並べ替える処理)をするプログラムが書ける人は, 10人分のデータをソートした後,上から3人の点数を足すという方法を使ってもよい.