公式
A - 家計簿の修正 / Correcting the Household Account Book 解説
by
A - 家計簿の修正 / Correcting the Household Account Book 解説
by
physics0523
初心者の方へ
- 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 入門用コンテンツです。
まず、 \(S=A_1+A_2+\dots+A_N\) を計算し、取り消しのない状態での口座残高を求めておきます。
その後、 \(Q\) 回の取り消しを処理します。
\(k\) 日目の取引を取り消すには、 \(S\) から \(A_k\) を引けばよいです。
(なお、制約よりこの問題では取引を取り消す日は相異なるため、同じ取引を複数回消してしまうことはありません。)
一連の操作は、 for 文と配列などを利用するなどして実現できます。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int main(){
ll N,Q;
cin >> N >> Q;
vector<ll> A(N+1);
ll S=0;
for(ll i=1;i<=N;i++){
cin >> A[i];
S+=A[i];
}
while(Q--){
ll D;
cin >> D;
S-=A[D];
cout << S << "\n";
}
return 0;
}
投稿日時:
最終更新:
