公式

A - 家計簿の修正 / Correcting the Household Account Book 解説 by physics0523


初心者の方へ


まず、 \(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;
}

投稿日時:
最終更新: