雲端列印服務公司提出一個新型服務。該公司有n 台3D 印表機,其中印表機 P1,P2, …, Pk 用以優先服務最為重要客戶,印表機 Pk+1, Pk+2, ..., Pn 列印速度較慢,用以優先服務一般客戶。每個客戶依該年度所選擇服務等級及所繳交費用可有不同的列印優先權,以1, …, 10000 表示之;10000 代表最高列印優先權,1 代表最低列印優先權。
為了不讓低列印優先權的客戶永無止盡的等待,印表機 P1,P2, …, Pk 一旦有空,等待的工作中優先權最高的工作就會被交付列印;而印表機 Pk+1, Pk+2, ..., Pn 一旦有空,等待的工作中優先權最低的工作就會被交付列印。
請寫一個程式列舉交付列印工作的順序。
輸入只有一行,共有不定數量的整數,整數可為{-2, -1, 0, 1, 2, …, 10000},兩整數之間以一個空白隔開。-2 表示印表機 P1,P2, …, Pk其中一台有空,可以列印最高優先權的工作;-1 表示印表機Pk+1, Pk+2, ..., Pn 其中一台有空,可以列印最低優先權的工作;1, 2, …,10000 代表新增一個優先權為該數字之工作;0 則代表輸入結束。若輸入為 -1 或 -2但無等待列印的工作,則不列印,需等待下一個 -1 或 -2 才再列印新的工作。
請依被列印工作的順序,輸出該工作的優先權代號,之後緊接著一個空白。尚未交付列印的工作不需輸出。
本題共有五組測試資料。每組可有多個輸入檔案,全部答對該組才得分。
第一組15 分,最多11 個工作需要被列印,且只有一次交付列印指令。
第二組15 分,最多20 個工作需要被列印,且只有二次交付列印指令。
第三組20 分,最多50 個工作需要被列印,且最多有25 次交付列印指令。
第四組20 分,最多15,000 個工作需要被列印或交付列印。
第五組30 分,最多500,000 個工作需要被列印或交付列印。
注意事項:
使用C++作答的同學,請在程式碼開頭加上#include<cstdio>
,並利用scanf讀入資料。使用cin 讀入資料可能會因為讀入效率太差以致於程式執行時間超過限制。
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。
104學年度高級中學資訊學科能力競賽決賽程式設計試題第一題
Set by Paupière
No. | Testdata Range | Score |
---|---|---|
1 | 0~6 | 15 |
2 | 7~11 | 15 |
3 | 12~16 | 20 |
4 | 17~23 | 20 |
5 | 24~29 | 30 |