3173: 抓只因

时间限制:500 ms 内存限制:64 MB
上传者:
提交:15 通过:2

题目描述

某天,groundhog的农场中的只因们全都跑出来了,作为农场主的grounghog理应将这些只因全部捉住,但他非常懒,于是把任务交给了你。
groundhog的农场的形状是一条东西向的线段,长为 $L$ 米,共有 $N$ 只只因分布在农场中(任意两只只因坐标均不同),它们都有一个初始的朝向(向东或向西)。这些只因非常狡猾,没有人能够在农场中将它们捉住。因此,groundhog给你想出了一个办法:众所周知,只因非常害怕惊吓,只要有人大叫一声,所有只因都会向着自己当前面朝的方向移动一米。而农场的两边边界(即 $0$ 和 $L$ 米处的位置)是只因笼子,只要只因踏入这里就会被只因笼子捉住。因此要捉住所有只因就只需不停的大叫。但请注意,如果两只相向而行的只因即将相撞的话,它们会在碰撞的那一刹那更改自己的方向并继续前进。
由于你包揽了捉只因的工作,因此你需要不停的大叫直到所有的只因都落入到农场两边的只因笼中。groundhog很好奇在整个捉只因的过程中你总共需要大叫多少次,并且每一只只因是在哪一次大叫的时候踏入了只因笼?

输入格式

第一行两个正整数 $N,L$,表示只因的数量和农场的长度。
第二行 $N$ 个正整数,第 $i$ 个正整数 $p_i$ 表示第 $i$ 只只因据农场东侧边界的初始距离。
第三行 $N$ 个非负整数,第 $i$ 个正整数 $d_i$ 表示第 $i$ 只只因的初始朝向($1$ 表示初始朝向西侧,$0$ 表示初始朝向东侧)。

输出格式

第一行一个正整数 $w$,表示捉住所有只因需喊叫的总次数。
第二行 $N$ 个正整数,第 $i$ 个正整数 $u_i$ 表示第 $i$ 只只因被捉住所用的大叫次数。

输入样例 复制

3 6
1 3 5
1 1 0

输出样例 复制

5
5 5 3

数据范围与提示