#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 に保存し、最後に結果を出力します。

プログラムの実行には、標準入力からの入力値が必要です。入力フォーマットに従って、整数値を空白区切りで指定してください。また、出力は標準出力に表示されます。