下記のサイトの競技プログラミングの問題を解きました。
リンク内容
簡単に説明すると、ある通貨について、時刻 t における価格 Rt (t=0,1,2,,,n−1t=0,1,2,,,n−1)が入力として与えられるので、価格の差 Rj−Ri (ただし、j>i とする) の最大値を求めてください。という問題です。
もしお時間があれば、この問題のプログラムを作成していただきぜひ参考にさせていただきたいです。
下記が僕が作成したプログラムです。多くの改善点があると思うので、改善するべきところを指摘していただくだけでも構いません。
また以下のテストケースを実行した時の実行時間は約32秒でした。ご参考までに。
テストケース
python
1# coding: UTF-8 2n = int(raw_input()) 3value_list = [] 4diff_indx1 = 0 5diff_indx2 = 0 6diff = None #変数の初期化 7for i in range(n): 8 value_list.append(int(raw_input())) 9 if i == 1:# diffの初期化 10 diff = value_list[1] - value_list[0] 11 diff_indx1 = 1 12 if value_list[i] >= value_list[diff_indx1]:#引かれる数の更新 13 diff2 = value_list[i] - value_list[diff_indx2] 14 if diff <= diff2: 15 diff = diff2 16 diff_indx1 = i 17 diff_indx2 = diff_indx2 18 if value_list[diff_indx2] > value_list[i]:#引く数の更新と引かれる数のリセット 19 diff_indx2 = i 20 diff_indx1 = i 21print diff
以上よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/03 12:56
2018/02/04 10:12