Codeforces Round #436 (Div. 2) D. Make a Permutation!(优先队列)
2017-09-25 22:58
459 查看
优先队列随便搞搞就过了。
出现一次的直接输出。没出现的数字放在优先队列里,当判断到出现多次的数字时,和优先队列的队首比较一下,选择较小的输出。
出现一次的直接输出。没出现的数字放在优先队列里,当判断到出现多次的数字时,和优先队列的队首比较一下,选择较小的输出。
#include <bits/stdc++.h> using namespace std; const int MAXN = 200100; int mark[MAXN]; int num[MAXN]; int main() { int n; scanf("%d",&n); for(int i = 1; i <= n; ++i) { scanf("%d",&num[i]); mark[num[i]]++; } priority_queue<int,vector<int>,greater<int>> que; for(int i = 1; i <= n; ++i) { if(!mark[i]) que.push(i); } printf("%d\n",que.size()); for(int i = 1; i <= n; ++i) { if(mark[num[i]] == 1) { printf("%d ",num[i]); } else if(mark[num[i]] > 1) { if(num[i] < que.top()) { printf("%d ",num[i]); mark[num[i]] = 0; } else { mark[num[i]]--; printf("%d ",que.top()); que.pop(); } } else { printf("%d ",que.top()); que.pop(); } } return 0; }
相关文章推荐
- Codeforces Round #436 (Div. 2) A.Fair Game B.Polycarp and Letters C. Bus D.Make a Permutation!
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- 【贪心】Codeforces Round #436 (Div. 2) D. Make a Permutation!
- Codeforces Round #436 (Div. 2) Make a Permutation!
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) Make a Permutation!
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- CodeForces - 864D Make a Permutation! 水题(用了优先队列)
- Codeforces Round #436 (Div. 2) D. Make a Permutation! 思维+贪心
- Codeforces Round #436 (Div. 2)D. Make a Permutation! codeforces-864D. Make a Permutation!
- Codeforces Round #436 (Div. 2) D. Make a Permutation!
- D. Make a Permutation! (Codeforces Round #436 (Div. 2))