中國有許多獨特的傳統,如鼎鼎大名的「中國洗衣問題」就曾經讓許多人百思不得其解。除了中國洗衣問題以外,「中國隊列」也是一個印證中國人超群智慧的文化。
「中國隊列」可以描述如下:假設今天有
中國隊列並不是一成不變的。在形成隊列過程中可能會發生人群的「重組」現象:對於已經在隊列裡的一群人,他們互相討論好之後,可以一起按照原先的順序移動到另一個也在隊列中的人的前面。「重組」現象是中國隊列的精髓所在,必須要有強大的合作精神才有可能做到大規模的重組。
例如,一開始隊列由前到後依序是
某日一群中國人準備要排成中國隊列領取訂購的商品。很恰好地,他們買的商品都是某種食物,並且每個人都只買了一個。
這個店家知道中國文化的精妙之處,因此決定使用以下的策略發放商品:他們每生產一批
給定一個中國隊列形成、重組與商品發放的過程,請你求出所有中國人拿到商品的順序,以及這個店家總共作廢了幾個商品。
第一行有一個正整數
接下來每一筆測資中,第一行有三個非負整數
接下來有
如果K=1,則
如果K=2,代表一次重組,排在
如果K=3,則
保證整個過程結束後,所有中國人都有拿到商品。
對於每筆測資,請輸出
第一行請輸出店家總共作廢了幾個商品。接下來
1 6 9 5 1 3 5 2 1 6 5 2 1 2 3 1 2 2 2 6 3 3 5 2 1 4 2 2 1 1 4 1 3 1 5 1 3 6 2 1
6 3 1 2 5 6 4
本題共有五組測試資料。每組可有多個輸入檔案,全部答對該組才得分。
第一組27分,
第二組22分,
第三組17分,
第四組34分,
注意事項:
使用C++作答的同學,請在程式碼開頭加上#include<cstdio>
,並利用scanf讀入資料、用printf輸出資料。使用cin / cout讀入/輸出資料可能會因為效率太差以致於程式執行時間超過限制。
scanf 常用的讀入方式如下:
scanf("%d",&x);
讀入一個有號整數至int 型態變數x。
scanf("%lld",&y);
讀入一個有號整數至long long 型態變數y。
scanf("%u",&x);
讀入一個無號整數至unsigned int 型態變數x。
scanf("%llu",&y);
讀入一個無號整數至unsigned long long 型態變數y。
printf 常用的輸出方式如下:
printf("%d\n",x);
輸出一行包含一個int 型態變數x。
printf("%lld\n",y);
輸出一行包含一個long long 型態變數y。
printf("%u\n",x);
輸出一行包含一個unsigned int 型態變數x。
printf("%llu\n",y);
輸出一行包含一個unsigned long long 型態變數y。
Problem Set / Description by Yihda Yol
建國中學105學年度全國賽模擬賽pA
No. | Testdata Range | Score |
---|---|---|
1 | 0~1 | 27 |
2 | 2~3 | 22 |
3 | 4~5 | 17 |
4 | 0~7 | 34 |