公式
A - お店の売上計算 / Store Sales Calculation 解説
by
A - お店の売上計算 / Store Sales Calculation 解説
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 入門用コンテンツです。
この問題は、\(N\) 個の商品の価格と \(M\) 件の購入記録を正しく読み取り、それぞれの購入記録に対して適切に価格を計算することで解くことができます。
実装例は以下のようになります。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N, M, K;
cin >> N >> M >> K;
vector<int> A(N);
for (int& a : A) {
cin >> a;
}
// 合計金額を求める
long ans = 0;
for (int i = 0; i < M; ++i) { // それぞれの購入記録について
int S, P, D;
cin >> S >> P >> D;
--P; // 0-indexed にする
int price = A[P]; // 価格は基本 A[P] 円
if (S == 1) { // 会員なら
price = price - min(price, K); // K 円減らす
}
ans += static_cast<long>(D) * price; // 購入個数をかけて足す
}
cout << ans << endl; // 答えを出力
return 0;
}
N, M, K = map(int, input().split())
A = list(map(int, input().split()))
# 合計金額を求める
ans = 0
for _ in range(M): # それぞれの購入記録について
S, P, D = map(int, input().split())
P -= 1 # 0-indexed にする
price = A[P] # 価格は基本 A[P] 円
if S == 1: # 会員なら
price = price - min(price, K) # K 円減らす
ans += D * price # 購入個数をかけて足す
print(ans) # 答えを出力
投稿日時:
最終更新:
