CSP認證練習題 201703 2 學生排隊

2021-08-26 20:30:40 字數 1250 閱讀 5999

問題描述

體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。

例如,下面給出了一組移動的例子,例子中學生的人數為8人。

0)初始佇列中學生的學號依次為1, 2, 3, 4, 5, 6, 7, 8;

1)第一次調整,命令為「3號同學向後移動2」,表示3號同學出隊,向後移動2名同學的距離,再插入到佇列中,新佇列中學生的學號依次為1, 2, 4, 5, 3, 6, 7, 8;

2)第二次調整,命令為「8號同學向前移動3」,表示8號同學出隊,向前移動3名同學的距離,再插入到佇列中,新佇列中學生的學號依次為1, 2, 4, 5, 8, 3, 6, 7;

3)第三次調整,命令為「3號同學向前移動2」,表示3號同學出隊,向前移動2名同學的距離,再插入到佇列中,新佇列中學生的學號依次為1, 2, 4, 3, 5, 8, 6, 7。

小明記錄了所有調整的過程,請問,最終從前向後所有學生的學號依次是多少?

請特別注意,上述移動過程中所涉及的號碼指的是學號,而不是在隊伍中的位置。在向後移動時,移動的距離不超過對應同學後面的人數,如果向後移動的距離正好等於對應同學後面的人數則該同學會移動到佇列的最後面。在向前移動時,移動的距離不超過對應同學前面的人數,如果向前移動的距離正好等於對應同學前面的人數則該同學會移動到佇列的最前面。

輸入格式

輸入的第一行包含乙個整數n,表示學生的數量,學生的學號由1到n編號。

第二行包含乙個整數m,表示調整的次數。

接下來m行,每行兩個整數p, q,如果q為正,表示學號為p的同學向後移動q,如果q為負,表示學號為p的同學向前移動-q。

輸出格式

輸出一行,包含n個整數,相鄰兩個整數之間由乙個空格分隔,表示最終從前向後所有學生的學號。

樣例輸入83

3 28 -3

3 -2

樣例輸出

1 2 4 3 5 8 6 7

評測用例規模與約定

對於所有評測用例,1 ≤ n ≤ 1000,1 ≤ m ≤ 1000,所有移動均合法

#include using namespace std;

void change(int a,int p,int q)//移動模擬

if(q>0)

a[j]=temp;

}}int main()

for(i=0;ifor(i=0;ireturn 0;

}

CCF 練習題201703 2 學生排隊

體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。例如,下面給出了一組移動的例子,例子中學生的人數為8人。0 初始佇列中學生的學號依次為1,2,3,4,5,6,...

CSP練習題2(棧 路徑解析)

在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案系統中的某...

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...