ページ

2012/04/22

[競技プログラミング][C言語][AtCoder]リモコン

リモコン

時間制限 : 2sec / スタックサイズの制限 : 10MB / メモリー制限 : 64MB

問題文

高橋君は、エアコンの設定温度を変更しようとしています。
現在の設定温度は A 度ですが、これを B 度に設定したいと思っています。

エアコンのリモコンは 1 回ボタンを押すことで、
1 度設定温度を下げる、もしくは上げる
5 度設定温度を下げる、もしくは上げる
10 度設定温度を下げる、もしくは上げる
の、6 種類の操作のいずれか 1 つを実行することが出来ます。

高橋君が設定温度を A 度から B 度に変更するために押すボタンの最小回数を求めなさい。

入力

入力は以下の形式で与えられる。
A B
1 行目は現在の設定温度を表す整数 A (0≤A≤40) と、設定したい温度を表す整数 B (0≤B≤40) が与えられる。

出力

高橋君がボタンを押す必要のある回数の最小値を 1 行に出力せよ。

出典

リモコン - AtCoder Regular Contest #001 | アットコーダー

回答

AtCoder/arc001_2.cpp at master · wada811/AtCoder · GitHub
温度差取って、その温度差を埋めるための操作回数をあらかじめ配列に持っとくという力技…。
白い行が温度差、黒い行が操作回数で、
区切ってみると2行目以降の操作回数は10で割った値を足しているだけ。
 0  1  2  3  4  5  6  7  8  9
 0  1  2  3  2  1  2  3  3  2
10 11 12 13 14 15 16 17 18 19
 1  2  3  4  3  2  3  4  4  3
20 21 22 23 24 25 26 27 28 29
 2  3  4  5  4  3  4  5  5  4
30 31 32 33 34 35 36 37 38 39
 3  4  5  6  5  4  5  6  6  5