题干:

Companies always have a lot of equipment, furniture and other things. All of them should be tracked. To do this, there is an inventory number assigned with each item. It is much easier to create a database by using those numbers and keep the track of everything.

During an audit, you were surprised to find out that the items are not numbered sequentially, and some items even share the same inventory number! There is an urgent need to fix it. You have chosen to make the numbers of the items sequential, starting with 1. Changing a number is quite a time-consuming process, and you would like to make maximum use of the current numbering.

You have been given information on current inventory numbers for n items in the company. Renumber items so that their inventory numbers form a permutation of numbers from 1 to n by changing the number of as few items as possible. Let us remind you that a set of n numbers forms a permutation if all the numbers are in the range from 1 to n, and no two numbers are equal.

Input

The first line contains a single integer n — the number of items (1 ≤ n ≤ 105).

The second line contains n numbers a1, a2, ..., an (1 ≤ ai ≤ 105) — the initial inventory numbers of the items.

Output

Print n numbers — the final inventory numbers of the items in the order they occur in the input. If there are multiple possible answers, you may print any of them.

Examples

Input

3
1 3 2

Output

1 3 2

Input

4
2 2 3 3

Output

2 1 3 4

Input

1
2

Output

1

Note

In the first test the numeration is already a permutation, so there is no need to change anything.

In the second test there are two pairs of equal numbers, in each pair you need to replace one number.

In the third test you need to replace 2 by 1, as the numbering should start from one.

题目大意:

题意1:有n个物品需要标记,每个物品标号都不能相同,要从1开始,且保证充分利用之前的标记,输出最后每个物品的标记。

题意2:给出一个数字n,接下来是n个数,把其中的重复的数或者大于n的数进行替换,使得整个数列是由1~n来组成的,可能会有多种答案,输出其中任意一种。详情直接看样例。

解题报告:

水题,打个标记处理一下就好了。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int MAX = 1e5 + 5;
int a[MAX];
bool vis[MAX];
int ans[MAX];
int main()
{int n;cin>>n;memset(ans,-1,sizeof(ans));memset(vis,0,sizeof(vis));for(int i = 1 ; i <= n ; i++){cin >> a[i];if(!vis[a[i]] && a[i] <= n){ans[i] = a[i];vis[a[i]]=1;}}int cur = 1;for(int i = 1 ; i <= n ; i ++){if(ans[i] == -1){for(int j = cur; j<=n ; j++){if(!vis[j]){cur = j;ans[i] =cur;vis[cur]=1;cur++;break;}}}}for(int i = 1; i<=n ; i++) {printf("%d%c",ans[i],i == n ? '\n' : ' ');}return 0;
}

【CodeForces - 569B】Inventory (水题)相关推荐

  1. Codeforces数据结构(水题)小结

    最近在使用codeblock,所以就先刷一些水题上上手 使用codeblock遇到的问题 1.无法进行编译-------从setting中的编译器设置中配置编译器 2.建立cpp后无法调试------ ...

  2. B - Average Numbers CodeForces - 134A(水题,思维)

    You are given a sequence of positive integers a1, a2, -, an. Find all such indices i, that the i-th ...

  3. A - System Administrator CodeForces - 245A(水题)

    Polycarpus is a system administrator. There are two servers under his strict guidance - a and b. To ...

  4. Letters CodeForces - 978C(水题,low_bound()函数使用)

    水题,记录一下low_bound(*begin,*end,num),其中low-bound是指以num为下界,寻找第一个比num大或相等的元素的指针,通过减去*begin指针我们可以获得相应的下标. ...

  5. A - Greed CodeForces - 892A(水题)

    Jafar has n cans of cola. Each can is described by two integers: remaining volume of cola ai and can ...

  6. Codeforces Divisibility【水题】

    A. Divisibility time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  7. Codeforces 864 A Fair Game 水题

    题目链接: http://codeforces.com/problemset/problem/864/A 题目描述: 看不是是不是一串数中只有两种数且这两种数字的数量是相同的 解题思路: 水题, 水过 ...

  8. Codeforces Round #355 (Div. 2) B. Vanya and Food Processor 水题

    B. Vanya and Food Processor 题目连接: http://www.codeforces.com/contest/677/problem/B Description Vanya ...

  9. Educational Codeforces Round 7 B. The Time 水题

    B. The Time 题目连接: http://www.codeforces.com/contest/622/problem/B Description You are given the curr ...

最新文章

  1. Linux内存映射--mmap函数
  2. matlab计算一个长式子,matlab求积分,式子太长
  3. 《剑指offer》-- 和为S的连续整数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列
  4. VTK:命名颜色用法实战
  5. Oracle JDBC中的PreparedStatement占位符过多
  6. java动态生成excel_java动态生成excel打包下载
  7. 软件测试中报表测试用例设计方法总结
  8. 硬件设计基础----MOS管
  9. 常见的随机变量分布律/概率密度、期望、方差以及特征函数
  10. gan 总结 数据增强_深度学习中的数据增强(下)
  11. python3注释_python3的注释
  12. texmaker中图片过大怎么办_latex 图或表和正文间距过大怎么处理
  13. homebrew是个啥
  14. 新西兰计算机预科学费,2018年新西兰ACG预科课程介绍(含学费、开学时间)
  15. 求任意凸多边形的面积(计算几何)
  16. Notepad++正则表达式语法
  17. c++ 类 const成员函数重载
  18. LeetCode 45. 跳跃游戏 II Jump Game II
  19. 怎样获取苹果APP里的资源图片
  20. 一加手机2 进入recovery 模式无法挂载USB存储器通过命令窗口上传ROM镜像

热门文章

  1. 动态规划6个题目总结比较
  2. 和县机电工程学校工业机器人_【校企合作】学校举行工业机器人教学系统捐赠仪式...
  3. 仿苹果涂鸦软件_这些iPhone自带软件,学会一个少装十几个APP,16G手机也够用
  4. 计算机实物知识需求市场调研,能力本位计算机维护论文
  5. php表格js特效,JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
  6. vuex的命名空间有哪些_Vue 3 带来的 Vuex 的替代方案
  7. linux搭建虚拟化平台报告,部署KVM虚拟化平台------搭建(示例代码)
  8. python opencv输出mp4_Python玩转视频处理(四):视频按场景进行分割
  9. 火星云分发全网视频_好用的短视频一键分发软件,让工作效率提高10倍
  10. 如何在CSDN博客中的所贴的代码进行【代码块】显示