Soldier and Badges
2016-02-26 16:15
239 查看
Description
Colonel has n badges. He wants to give one badge to every of his
n soldiers. Each badge has a
coolness factor, which shows how much it's owner reached. Coolness factor can be increased by one for the cost of one coin.
For every pair of soldiers one of them should get a badge with strictly higher factor than the second one. Exact values of their factors aren't important, they just need to have distinct factors.
Colonel knows, which soldier is supposed to get which badge initially, but there is a problem. Some of badges may have the same factor of coolness. Help him and calculate how much money has to be paid for making all badges have different factors of coolness.
Input
First line of input consists of one integer n (1 ≤ n ≤ 3000).
Next line consists of n integers
ai (1 ≤ ai ≤ n), which stand for coolness factor of each badge.
Output
Output single integer — minimum amount of coins the colonel has to pay.
Sample Input
Input
Output
Input
Output
Sample Output
Hint
In first sample test we can increase factor of first badge by
1.
In second sample test we can increase factors of the second and the third badge by
1.
Colonel has n badges. He wants to give one badge to every of his
n soldiers. Each badge has a
coolness factor, which shows how much it's owner reached. Coolness factor can be increased by one for the cost of one coin.
For every pair of soldiers one of them should get a badge with strictly higher factor than the second one. Exact values of their factors aren't important, they just need to have distinct factors.
Colonel knows, which soldier is supposed to get which badge initially, but there is a problem. Some of badges may have the same factor of coolness. Help him and calculate how much money has to be paid for making all badges have different factors of coolness.
Input
First line of input consists of one integer n (1 ≤ n ≤ 3000).
Next line consists of n integers
ai (1 ≤ ai ≤ n), which stand for coolness factor of each badge.
Output
Output single integer — minimum amount of coins the colonel has to pay.
Sample Input
Input
4 1 3 1 4
Output
1
Input
5 1 2 3 2 5
Output
2
Sample Output
Hint
In first sample test we can increase factor of first badge by
1.
In second sample test we can increase factors of the second and the third badge by
1.
#include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; int main() { int n, i, j, x = 0, y, min, m; int a[3000]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &a[i]); } sort(a, a + n); x = 0; for (i = 1; i < n; i++) { if (a[i] <= a[i - 1]) { m = a[i - 1] - a[i] + 1; a[i] += m; x += m; } } printf("%d\n", x); return 0; }
相关文章推荐
- Python学习笔记 - 7.列表(List)
- JVM内幕:Java虚拟机详解
- 浅谈Linux下的五种I/O模型
- hadoop生态圈综合简介及架构案例
- Python PEP8代码风格
- Ubuntu更新源
- Type mismatch: cannot convert from Test to Annotation
- 如何让导航条高亮显示
- Android由web页打开自己的app
- Python学习笔记 - 6.文件
- HDU3555 要49 数位DP
- Java中建造者(Builder)设计
- 欢迎使用CSDN-markdown编辑器
- mongoDB 入门指南、示例
- JAVA程序中SQL语句无法传递中文参数
- 测试技术培训:如何测试磁盘写的速度
- 老李分享:webservice是什么?
- 【云计算】docker daemon如何提供Restful的API
- button的标题文字调整位置
- OC实现多继承