公式

A - 散歩道のコイン集め / Collecting Coins on the Walking Path 解説 by MMNMM


初心者の方へ

この問題は、それぞれのコインについて、そのコインが高橋君が訪れる地点に置かれているかを判定することで解くことができます。 高橋君が訪れる地点かどうかを if 文で判定し、それを for 文で繰り返すことでそれぞれのコインに対する処理を行うことができます。

\(S\) と \(T\) を入れ替えても高橋君が訪れる地点は変わらないことを利用して、\(S\) と \(T\) の大小関係を固定しておくと実装が楽になるかもしれません。

実装例は以下のようになります。

#include <iostream>
using namespace std;

int main() {
    int N, M, S, T;
    cin >> N >> M >> S >> T;

    // S <= T にしておく
    if (S > T) {
        swap(S, T);
    }

    int ans = 0;
    for (int i = 0; i < M; ++i) {
        int P, V;
        cin >> P >> V;
        if (S <= P && P <= T) { // 高橋君が訪れる地点に置かれているなら
            ans += V; // 価値を加える
        }
    }
    cout << ans << endl;
    return 0;
}
N, M, S, T = map(int, input().split())

# S <= T にしておく
if S > T:
    S, T = T, S

ans = 0
for i in range(M):
    P, V = map(int, input().split())
    if S <= P <= T: # 高橋君が訪れる地点に置かれているなら
        ans += V # 価値を加える

print(ans)

投稿日時:
最終更新: