您的位置:首页 > 其它

Codeforces Round #178 (Div. 2)---A. Shaass and Oskols

2014-11-02 15:39 746 查看
Shaass and Oskols

time limit per test
2 seconds

memory limit per test
256 megabytes

input
standard input

output
standard output

Shaass has decided to hunt some birds. There are n horizontal electricity wires aligned parallel to each other. Wires are numbered 1 to nfrom
top to bottom. On each wire there are some oskols sitting next to each other. Oskol is the name of a delicious kind of birds in Shaass's territory. Supposed there are ai oskols
sitting on the i-th wire.



Sometimes Shaass shots one of the birds and the bird dies (suppose that this bird sat at the i-th wire). Consequently all the birds on the i-th
wire to the left of the dead bird get scared and jump up on the wire number i - 1, if there exists no upper wire they fly away. Also all the birds to the
right of the dead bird jump down on wire number i + 1, if there exists no such wire they fly away.

Shaass has shot m birds. You're given the initial number of birds on each wire, tell him how many birds are sitting on each wire after the shots.

Input

The first line of the input contains an integer n, (1 ≤ n ≤ 100).
The next line contains a list of space-separated integers a1, a2, ..., an, (0 ≤ ai ≤ 100).

The third line contains an integer m, (0 ≤ m ≤ 100).
Each of the next m lines contains two integers xi and yi.
The integers mean that for the i-th time Shaass shoot the yi-th
(from left) bird on the xi-th
wire, (1 ≤ xi ≤ n, 1 ≤ yi).
It's guaranteed there will be at least yi birds
on thexi-th
wire at that moment.

Output

On the i-th line of the output print the number of birds on the i-th
wire.

Sample test(s)

input
5
10 10 10 10 10
5
2 5
3 13
2 12
1 13
4 6


output
0
12
5
0
16


input
3
2 4 1
1
2 2


output
3
0
3


解题思路:有n排电线杆,第i个上面有ai只鸟,每次拿枪射杀第xi排的第yi只鸟,这只鸟肯定会死掉(没有意外),yi左边的鸟会全部飞到第 i-1 根电线杆上,如果是 i == 1,则那些鸟就飞走了;yi右边的鸟全都飞到了第 i+1 跟电线杆上,如果 i == n ,则那些鸟就全都飞走了。问开了m枪后,最后各个电线杆上的鸟数各是多少。

直接暴力一步一步做呗。貌似还没见到什么更好的方法。

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 0x7fffffff

int 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: