CCF201703 學生排隊(JAVA)
問題描述: | 問題描述 體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。 輸入格式 輸入的第一行包含一個整數n,表示學生的數量,學生的學號由1到n編號。 輸出格式 輸出一行,包含n個整數,相鄰兩個整數之間由一個空格分隔,表示最終從前向後所有學生的學號。 樣例輸入 8 樣例輸出 1 2 4 3 5 8 6 7 評測用例規模與約定 對於所有評測用例,1 ≤ n ≤ 1000,1 ≤ m ≤ 1000,所有移動均合法。 |
package studentQueue; import java.util.Scanner; import java.util.Vector; public class Main { @SuppressWarnings("resource") public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n = sc.nextInt();// 學生數量 int m = sc.nextInt();// 調整次數 int p;// 學號 int q;// 調整位置 Vector<Integer> ve = new Vector<>();// 學生佇列 for (int i = 1; i <= n; i++)// 初始化學生佇列 { ve.add(i); } for (int i = 0; i < m; i++) { p = sc.nextInt(); q = sc.nextInt(); int t = ve.indexOf(p);// 查詢序號 ve.remove(t);// 先從佇列中移除 ve.add(t + q, p);// 再插入至佇列 } for (int r : ve) { System.out.print(r + " "); } } }