C. 小Q的棋子

传统 1000 ms 256 MiB
标准 IO
文本比较

题目描述

小Q家里有一个nnmm列的棋盘,他在每个格子上放了一个棋子。 现在小Q的心情很糟糕,他打算拿棋子发泄。 小Q会对着棋盘用力吹气,方向只有上下左右四种,每次会使所有棋子同时向气流方向移动一格,移出棋盘的棋子不会再回到棋盘。 小Q想知道每次吹气后棋盘上还剩下多少棋子。

输入格式

第一行三个正整数n,m,qn,m,q,表示棋盘规格和小Q的吹气次数。

接下来qq行每行一个正整数xx,表示吹气的方向。

  • X=0:所有棋子向上移动1格。
  • X=1:所有棋子向右移动1格。
  • X=2:所有棋子向下移动1格。
  • X=3:所有棋子向左移动1格。

输出格式

qq行,表示每次吹完气后,棋盘上剩下的棋子个数。

样例

样例输入:

4 5 5
0
3
1
2
1

样例输出:

15
12
12
12
9

样例解释:
11次吹气所有棋子向上移动11格,第11行的棋子全部移出,还剩35=153*5=15个棋子。 第2次吹气所有棋子向左移动11格,33个棋子从左侧移出,还剩34=123*4=12个棋子。

数据范围与提示

1<=n,m,q<=3000001<=n,m,q<=300000

说明: 若使用cin读入,可以在main函数的开头写:ios::sync_with_stdio(false);以提升读入速读,且该程序不要再使用scanf进行输入。

//...
int main(){
    ios::sync_with_stdio(false);
    //...
    return 0;
}