잔디깎이
시간 제한1초메모리 제한1024 MB
매일 아침 잔디가 1cm씩 자라고 낮에 b_j번 깎일 때, 매일 저녁 남은 잔디 높이의 합을 구한다.
문제
마르티나스의 집 앞에는 잔디밭이 있습니다. 이 잔디밭은 길이가 센티미터인 직선으로 볼 수 있으며, 센티미터마다 잔디 포기가 하나씩 돋아 있습니다. 번째 위치()의 잔디 포기 높이는 센티미터입니다.
지금까지 잔디를 한 번도 깎지 않아서 잔디밭을 산책하기도, 소풍을 즐기기도 어려운 상태입니다.
마르티나스는 잔디깎이를 샀고, 일에 걸쳐 잔디의 대부분을 깎으려 합니다. 번째 날()에는 다음 일이 순서대로 일어납니다.
- 아침: 아직 완전히 깎이지 않은() 모든 잔디 포기가 자랍니다.
- 낮: 마르티나스가 잔디깎이로 잔디밭을 번 지나갑니다. 한 번 지나갈 때마다 아직 깎이지 않은 모든 잔디 포기의 높이가 씩 줄어듭니다(높이는 아래로 내려가지 않습니다).
- 저녁: 아직 남아 있는 잔디의 총 높이(센티미터)를 셉니다.
예를 들어 잔디밭 길이가 ()이고 잔디 포기의 높이가 각각 이라고 합시다. 마르티나스는 일 동안 일하며, 첫째 날에는 잔디밭을 번, 둘째 날에는 번 지나갑니다.
첫째 날 아침에는 모든 포기가 자라 가 됩니다. 낮에 잔디밭을 두 번 지나가면 각 포기가 씩 줄어 가 되고, 저녁에는 의 잔디가 남습니다.
둘째 날 아침에는 아직 잔디가 남아 있는 포기만 자라(첫째와 셋째 포기는 이므로 그대로) 이 됩니다. 낮에 한 번 지나가면 가 되고, 저녁에는 다시 가 남습니다.
잔디밭의 초기 상태와 일 동안의 잔디 깎기 계획이 주어질 때, 일 각각의 저녁에 남아 있는 잔디의 총 높이를 구하세요.
입력
- 첫째 줄에 잔디밭의 길이를 나타내는 정수 이 주어집니다.
- 둘째 줄에 공백으로 구분된 개의 정수 () — 잔디 포기들의 높이가 주어집니다.
- 셋째 줄에 마르티나스가 잔디를 깎는 날수를 나타내는 정수 이 주어집니다.
- 넷째 줄에 공백으로 구분된 개의 정수 () — 번째 날에 잔디밭을 지나가는 횟수가 주어집니다.
출력
개의 줄을 출력합니다. 번째 줄()에는 번째 날이 끝났을 때 남아 있는 잔디의 총 높이(센티미터)를 나타내는 정수 하나를 출력합니다.
제한
- ()
- ()
힌트
계산 과정에서 비트 정수 자료형(C/C++의 long long)이 필요할 수 있음에 유의하세요.