けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 290 A - Contest Result (7Q, 灰色, 100 点)

配列の中に配列型式の添字を入れるような処理(A[B[i]] のような)を書けるようになろう!

問題概要

あるコンテストでは  N 問が出題され、配点はそれぞれ  A_{1}, A_{2}, \dots, A_{N} 点であった。

参加者のすぬけ君は、このうちの  M B_{1}, B_{2}, \dots, B_{M} 問を解いた。

すぬけ君の得点はいくらか?

制約

  •  1 \le M \le N \le 100
  •  1 \le B_{i} \le N

考えたこと

すぬけ君の解いた  M 問それぞれについての得点を考えよう。すぬけ君の解いた  i 番目の問題は B[i] - 1(C++ では配列を 0 始まりで考える)であるから、その得点は

A[B[i] - 1]

となる。この値を  i = 0, 1, \dots, M-1 について足していけばよい。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, M;
    cin >> N >> M;
    vector<int> A(N), B(M);
    for (int i = 0; i < N; i++) cin >> A[i];
    for (int i = 0; i < M; i++) cin >> B[i];

    int res = 0;
    for (int i = 0; i < M; i++) res += A[B[i] - 1];
    cout << res << endl;
}