Shaass と Oskols
テストごとの制限時間
2 秒
テストごとのメモリ制限
256 メガバイト
入力
標準入力
出力
標準出力
シャースは決定しました鳥を狩るために。互いに平行に並んだn本の水平電線があります。ワイヤには上から下に 1 から n の番号が付けられます。各電線にはいくつかのオスコルが隣り合って座っています。オスコルはシャースの領土に生息する美味しい鳥の名前です。 i 番目のワイヤーに AI オスコルが座っていると仮定します。
時々、シャースが鳥の 1 匹を撃ち、その鳥が死ぬことがあります (この鳥が i 番目のワイヤーに座っていると仮定します)。その結果、死んだ鳥の左側にある i 番目のワイヤー上のすべての鳥は怖がって、ワイヤー番号 i?-?1 に飛び上がります。上部のワイヤーが存在しない場合は飛び去ります。また、死んだ鳥の右側にあるすべての鳥は、ワイヤー番号 i?+?1 に飛び降ります。そのようなワイヤーが存在しない場合は、飛び去ります。
シャースは m 羽の鳥を撃ちました。各ワイヤー上の鳥の初期数が与えられ、ショット後に各ワイヤーに何羽の鳥が止まっているかを伝えます。
入力
入力の最初の行には整数 n,(1?≤?) が含まれています。 n?≤?100)。次の行には、スペースで区切られた整数のリスト a1,?a2,?...,?an,(0?≤?ai?≤?100) が含まれます。
3 行目には整数 m,(0?≤) が含まれます。 ?m?≤?100)。次の m 行のそれぞれには、2 つの整数 xi と yi が含まれます。整数は、i 回目にシャースが xi 番目のワイヤーで (左から) yi 番目の鳥を撃つことを意味します (1?≤?xi?≤?n,?1?≤?yi)。その時点で、xi 番目のワイヤーに少なくとも yi の鳥がいることが保証されています。
出力
出力の i 行目に、i 番目のワイヤー上の鳥の数を出力します。
サンプルテスト
入力
510 10 10 10 1052 53 132 121 134 6
出力
0125016
入力
32 4 112 2
出力
303
解题思路:有排電線杆、第一上面有ai只鸟、每次拿枪射杀第xi排の第yi只鸟、这只鸟肯定会死掉(意外性なし)、yi左边的鸟会i == 1 の場合、i-1 番目の根電柱にすべて到達し、i == n の場合、yi 右端のすべてが i+1 根電柱に到達します。それらはすべて完了しました。 解放された後、最後の各電線の数はそれぞれ多少です。
AC代コード:
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;#define INF 0x7fffffffint a[105];int main(){ #ifdef sxk freopen("in.txt","r",stdin); #endif int n, x, y, m; while(scanf("%d",&n)!=EOF) { for(int i=1; i<=n; i++){ scanf("%d",&a[i]); } scanf("%d", &m); for(int i=0; i<m; i++){ scanf("%d%d", &x, &y); int t = min(a[x], y-1); int tt = max(a[x]-y, 0); a[x-1] += t; a[x] -= t; a[x+1] += tt; a[x] -= tt; a[x] --; } for(int i=1; i<=n; i++) printf("%d\n", a[i]); } return 0;}