Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 67 - 抽方塊

Special Judge

Problem Statistics

Solved Member: 13  Submission: 68  User Tried: 15

Statement:

你正在玩一個遊戲,遊戲規則是這樣的,有 n 個方塊,由下到上的位置標為1,2,3 ... n。
每個方塊上有一個數字A1 , A2 , A3 ... An,如果能夠使方塊的編號與他的位置相符,那麼就有1分的得分。
你必須從中間抽走一些方塊,讓得分最高,請問你該怎麼做呢?

Task:

讀入方塊的順序以及標號,請輸出要抽掉哪幾個方塊才能夠使得分最高。

Input:Output:

第 1 行有 1 個數字 n(1 ≤ n ≤ 100000),代表有幾個方塊。
第 2 行有 n 個數字,依序為從下到上的方塊編號 Ai (1 ≤ Ai ≤ 1000000)。
第 1 行輸出一個數字 m ,代表你要抽走 m 個方塊。
第 2 行輸出你要抽走的方塊「最初」的「位置」,如果有多種可能,隨便輸出一種就可以。

請注意一些限制:
1.順序可以隨便
2.你不可以重複拿走同一個位置方塊
3.不可以做不合法的移動

Sample Input:Sample Output:

5
1 1 2 5 4
1
1

HINT:



上圖為範例測資的疊法,拿掉由下往上數的第 1 個方塊(下圖)可以得3分!

Source:

POI 14 Stage 3

Problem Setter

Testdata:

TestTimeMemoryScore
01000ms32768kb
1-ocen1000ms32768kb
11000ms32768kb9
2-ocen1000ms32768kb
21000ms32768kb9
3-ocen1000ms32768kb
31000ms32768kb9
4-ocen1000ms32768kb
41000ms32768kb9
51000ms32768kb9
61000ms32768kb9
71000ms32768kb9
81000ms32768kb9
9-11000ms32768kb9
9-21000ms32768kb
10-11000ms32768kb9
10-21000ms32768kb
111000ms32768kb10