Official

A - ベルトコンベア / Belt Conveyor Editorial by kyopro_friends


初心者の方へ


問題文の指示通り、操作をシミュレーションしましょう。実装上は、作業台 \(N+1\) を用意することで、作業台 \(N\) も他と同様の処理をすることができます。

多くのプログラミング言語では、配列の添字は \(0\) から始まることに注意してください。また、言語によってはオーバーフローに注意してください。

実装例 (C++)

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

int main(){
  int n, q;
  cin >> n >> q;
  vector<long long>a(n+1);  // 仮想的な作業台 N+1 を用意
  for(int i=0; i<n; i++) cin >> a[i];

  for(int i=0; i<q; i++){
    int b;
    cin >> b;
    b--;
    a[b+1] += a[b];
    a[b] = 0;
  }

  for(int i=0; i<n; i++){
    cout << a[i];
    if(i != n-1){
      cout << ' ';
    }else{
      cout << endl;
    }
  }
}

実装例 (Python)

N, Q = map(int, input().split())
A = list(map(int, input().split())) + [0]  # 仮想的な作業台 N+1 を用意

for _ in range(Q):
  b = int(input()) - 1
  A[b+1]  +=  A[b]
  A[b] = 0

print(*A[:-1])  # 仮想的な作業台 N+1 を除いて出力

posted:
last update: