Kattis - missinggnomesD Missing Gnomes (思路題)
阿新 • • 發佈:2018-11-07
題目:
題意:
給出已經去除了幾個數的一個序列,任務是將去除的數字插回去補全這個序列,輸出字典序排在第一的那個補全的序列。
例如:
樣例輸入:
5 3
1 4 2
樣例輸出:
1 3 4 2 5
思路:
用陣列存一下給出的序列,用一個佇列存一下被去除的數字的序列(由小到大排列),然後分別比較兩個容器的第一個元素,那個小就先輸出哪一個,知道兩個容器中的元素都輸出完畢。
程式碼:
#include <bits/stdc++.h> #define inf 0x3f3f3f3f #define FRE() freopen("in.txt","r",stdin) usingView Codenamespace std; typedef long long ll; const int maxn = 1e5+10; int a[maxn],vis[maxn]; int main(){ //FRE(); int n,m; scanf("%d%d",&n,&m); for(int i = 0; i<m; i++){ scanf("%d",&a[i]); vis[a[i]] = 1; } queue<int> que; for(int i = 1; i<=n; i++){if(vis[i] == 0){ que.push(i); } } int cnt = 0; while(cnt<m && !que.empty()){ if(a[cnt] < que.front()){ printf("%d\n",a[cnt++]); } else{ printf("%d\n",que.front()); que.pop(); } } //將剩餘的元素全部輸出出來while(cnt<m){ printf("%d\n",a[cnt++]); } while(!que.empty()){ printf("%d\n",que.front()); que.pop(); } return 0; } /* PutIn: 5 3 1 4 2 PutOut: 1 3 4 2 5 PutIn: 7 4 6 4 2 1 PutOut: 3 5 6 4 2 1 7 */