公式
A - 散歩道のコイン集め / Collecting Coins on the Walking Path 解説
by
A - 散歩道のコイン集め / Collecting Coins on the Walking Path 解説
by
MMNMM
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
この問題は、それぞれのコインについて、そのコインが高橋君が訪れる地点に置かれているかを判定することで解くことができます。 高橋君が訪れる地点かどうかを 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)
投稿日時:
最終更新:
