Official
A - ベルトコンベア / Belt Conveyor Editorial
by
A - ベルトコンベア / Belt Conveyor Editorial
by
kyopro_friends
初心者の方へ
- 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+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:
