一條彩帶被分成 $n$ 個相同大小的格子,有的格子是紅色,有些則是白色。小軒拿到彩帶後開始塗顏色,每次會將一個白色格子塗滿紅色,然後小軒會算一算目前最長與最短紅色區域的長度佔了幾格,相鄰的紅色格子就屬於同一個紅色區域。
小軒一共塗了 $k$ 次,請你計算出每一次紅色區域的最大與最小長度,並輸出個別的總和。
彩帶可以看成一維陣列,以 0
表示白色,而 1
表示紅色。彩帶的格子從 1
開始由左而右依序編號,小軒每次將某個格子塗上紅色。以下是一個例子。
剛開始的彩帶 0 1 1 0 0 1 0 1 0
一開始紅色區域最大的長度是2,最小的長度是1。
第1次塗在第5格後 0 1 1 0 1 1 0 1 0
第1次塗完後最長的紅色區域有2塊,長度都是 $2$,最小的長度是1。
第2次塗在第1格後 1 1 1 0 1 1 0 1 0
第2次塗完後紅色區域的最大長度是 $3$,最小長度是 $1$。
第3次塗在第7格後 1 1 1 0 1 1 1 1 0
第3次塗完後紅色區域的最大長度是 $4$,最小長度是 $3$。
以這個例子而言,每一次(包含剛開始) 紅色區域的最大長度總和是 $2+2+3+4=11$;
而紅色區域的最小長度總和是 $1+1+1+3=6$。
輸入有三行,第一行是兩個整數,依序是 $n$ 與 $k$,代表彩帶長度以及小軒塗色的次數,$n \le 10^5$、$k \le 20000$。
第二行有 $n$ 個 0
或 1
的數字,依序代表彩帶第 $1$ 格至第 $n$ 格的顏色,0
代表白色,1
代表紅色。
第三行有 $k$ 個數字,依序代表每一次塗紅色的格子編號,若 $k = 0$,則第三行為空行。同一行數字之間都是以空白間隔。
小軒每次一定都塗在白色格子上,而且最大的紅色區域長度不會超過 $11000$。
輸出兩行,第一行是每次紅色區域最大長度的總和,第二行是每次紅色區域最小長度的總和。
5 1 1 0 1 0 1 2
4 2
9 3 0 1 1 0 0 1 0 1 0 5 1 7
11 6
ID | User | Problem | Subject | Hit | Post Date |
沒有發現任何「解題報告」 |