#joi2017hoa. [joi2017ho_a]フェーン現象 (Foehn Phenomena)
[joi2017ho_a]フェーン現象 (Foehn Phenomena)
地殻変動後の風の温度を求めるプログラム
以下は、地殻変動が起きる前の標高と地殻変動の情報が与えられた場合に、各地殻変動が起こった後のJOI君の家に吹く風の温度を求めるプログラムです。
# 入力
- 地点の数 N, 地殻変動の回数 Q, 風の温度の変化量 S, T
- 地点 i+1 の地殻変動が起こる前の標高 A_i
- j 日目の地殻変動で地点 L_j から R_j までの標高が X_j だけ変化する
# 出力
- j 日目の地殻変動が起こった後の JOI 君の家に吹く風の温度
## 入力例 1
3 5 1 2
0
4
1
8
1 2 2
1 1 -2
2 3 5
1 2 -1
1 3 5
## 出力例 1
-5
-7
-13
-13
-18
最初,地点 0, 1, 2, 3 の標高はそれぞれ 0, 4, 1, 8 である.
1 日目の地殻変動の後,標高はそれぞれ 0, 6, 3, 8 となる.
このとき,地点 0, 1, 2, 3 での風の温度はそれぞれ 0, -6, 0, -5 となる.
## 入力例 2
2 2 5 5
0
6
-1
1 1 4
1 2 8
## 出力例 2
5
-35
この入力例は,小課題 2 の条件を満たす.
## 入力例 3
7 8 8 13
0
4
-9
4
-2
3
10
-9
1 4 8
3 5 -2
3 3 9
1 7 4
3 5 -1
5 6 3
4 4 9
6 7 -10
## 出力例 3
277
277
322
290
290
290
290
370
def calculate_wind_temperature(N, Q, S, T, A, queries):
# JOI 君の家の初期の標高と風の温度
current_elevation = A[-1]
current_temperature = 0
# 地殻変動が起こった後の風の温度を計算
wind_temperatures = []
for L, R, X in queries:
# 標高の変化量
elevation_change = sum(A[i] - A[i+1] for i in range(L-1, R-1))
# 変化後の標高と風の温度を計算
current_elevation += elevation_change
if elevation_change > 0:
current_temperature -= S * elevation_change
else:
current_temperature += T * abs(elevation_change)
wind_temperatures.append(current_temperature)
return wind_temperatures
# 入力を受け取る
N, Q, S, T = map(int, input().split())
A = [0] + [int(input()) for _ in range(N)]
queries = [list(map(int, input().split())) for _ in range(Q)]
# 地殻変動後の風の温度を計算
result = calculate_wind_temperature(N, Q, S, T, A, queries)
# 結果を出力
for temperature in result:
print(temperature)
このプログラムでは、calculate_wind_temperature
関数を使用して地殻変動後の風の温度を計算します。各地殻変動が起こった後のJOI君の家の地点における風の温度をリスト wind_temperatures
に保存し、最後に結果を出力します。
プログラムの実行には、標準入力からの入力値が必要です。入力フォーマットに従って、整数値を空白区切りで指定してください。また、出力は標準出力に表示されます。