公式

B - 街灯の明るさ / Brightness of Street Lights 解説 by physics0523


この問題では、 \(B_i\) が入力される度に街灯 \(B_i-1,B_i,B_i+1\) の明るさに \(1\) 加算することが要求されています。
これは配列と for ループを組み合わせることで実現できます。
なお、一見街灯 \(0\) や街灯 \(N+1\) を参照してしまうケースで場合分けが要求されそうですが、便宜上街灯 \(0,N+1\) の明るさも保持できるようにした上で出力に出さないようにすれば場合分けが不要になります。

実装例 (C++):

#include<bits/stdc++.h>

using namespace std;

int main(){
  int N,M;
  cin >> N >> M;
  vector<int> A(N+2,0);
  for(int i=1;i<=N;i++){
    cin >> A[i];
  }
  while(M--){
    int B;
    cin >> B;
    A[B-1]++;
    A[B]++;
    A[B+1]++;
  }
  for(int i=1;i<=N;i++){
    if(i>1){cout << " ";}
    cout << A[i];
  }
  cout << "\n";
  return 0;
}

投稿日時:
最終更新: