CF div2 318 A

A. Bear and Elections

Limak is a grizzly bear who desires power and adoration. He wants to win in upcoming elections and rule over the Bearland.

There are n candidates, including Limak. We know how many citizens are going to vote for each candidate. Now i-th candidate would get ai votes. Limak is candidate number 1. To win in elections, he must get strictly more votes than any other candidate.

Victory is more important than everything else so Limak decided to cheat. He will steal votes from his opponents by bribing some citizens. To bribe a citizen, Limak must give him or her one candy - citizens are bears and bears like candies. Limak doesn‘t have many candies and wonders - how many citizens does he have to bribe?

Input

The first line contains single integer n (2 ≤ n ≤ 100) - number of candidates.

The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 1000) - number of votes for each candidate. Limak is candidate number 1.

Note that after bribing number of votes for some candidate might be zero or might be greater than 1000.

Output

Print the minimum number of citizens Limak must bribe to have strictly more votes than any other candidate.

Sample test(s)

Input

55 1 11 2 8

Output

4

Input

41 8 8 8

Output

6

Input

27 6

Output

0

Note

In the first sample Limak has 5 votes. One of the ways to achieve victory is to bribe 4 citizens who want to vote for the third candidate. Then numbers of votes would be 9, 1, 7, 2, 8 (Limak would have 9 votes). Alternatively, Limak could steal only 3 votes from the third candidate and 1 vote from the second candidate to get situation 9, 0, 8, 2, 8.

In the second sample Limak will steal 2 votes from each candidate. Situation will be 7, 6, 6, 6.

In the third sample Limak is a winner without bribing any citizen.

A题 题意大致是有N个人选举每个人有ai票,第一个人可以从其他候选人那偷票,问最少要偷几张票才能让第一个人获胜

开始写的时候想到直接模拟每次排序取最大的和第一个比较这样写的好SB 后来想可以直接用优先队列搞

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <queue>
 5 #include <vector>
 6 #include <stack>
 7 #include <algorithm>
 8
 9 using namespace std;
10
11 const int M = 10005;
12 const int maxn = 5000;
13 typedef long long ll;
14
15 vector<int>G[maxn];
16 queue<int>Q;
17 stack<int>st;
18
19 priority_queue<int>q;
20
21 int a[maxn];
22
23 int main()
24 {
25
26     int n;
27     int ans = 0;
28     int id=0;
29     scanf("%d",&n);
30     int tmp = -1;
31     for(int i=0;i<n;i++){
32         scanf("%d",&a[i]);
33         if(i!=0)
34             q.push(a[i]);
35
36     }
37
38     if(q.top() < a[0]) printf("0\n");
39     else {
40             int t;
41             int res = ans = a[0];
42         while(res <= q.top()){
43              t = q.top();
44              q.pop();
45             t--;
46             res++;
47             q.push(t);
48         }
49
50     printf("%d\n",res-ans);
51     }
52
53
54
55     return 0;
56 }

时间: 2024-10-06 20:34:23

CF div2 318 A的相关文章

CF div2 318 C

C. Bear and Poker Limak is an old brown bear. He often plays poker with his friends. Today they went to a casino. There are n players (including Limak himself) and right now all of them have bids on the table. i-th of them has bid with size ai dollar

CF div2 318 D

D. Bear and Blocks Limak is a little bear who loves to play. Today he is playing by destroying block towers. He built n towers in a row. The i-th tower is made of hi identical blocks. For clarification see picture for the first sample. Limak will rep

CF div2 318 B

B. Bear and Three Musketeers Do you know a story about the three musketeers? Anyway, you will learn about its origins now. Richelimakieu is a cardinal in the city of Bearis. He is tired of dealing with crime by himself. He needs three brave warriors

Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)

以后每做完一场CF,解题报告都写在一起吧 暴力||二分 A - Bear and Elections 题意:有n个候选人,第一个候选人可以贿赂其他人拿到他们的票,问最少要贿赂多少张票第一个人才能赢 分析:正解竟然是暴力!没敢写暴力,卡了很久,导致这场比赛差点爆零!二分的话可以优化,但对于这题来说好像不需要... 收获:以后CF div2的A题果断暴力 代码(暴力): /************************************************ * Author :Runni

CF1287 div2题解

前言 昨夜打CF div2,思涨分之事.然脑未上线,BC题皆挂,仅A两道. 特写此篇,以记此耻. 所有题题面:https://codeforces.com/contest/1287/problems A. Angry Students 题面:https://codeforces.com/contest/1287/problem/A 题解:直接扫一遍,记录\(A\)后面最长的一段\(P\)即可. 时间复杂度:\(O(n)\). 代码:略 B. Hyperset 题面:https://codefor

HDU-SupportOrNot训练实录

菜鸡队训练实录. 现场赛记录: 2016:[名称:奖项/排名] ZJPSC:Gold/1 CCPC中南邀请赛:Gold/1 ICPC Dalian:Gold/24 ICPC Beijing:??? CCPC Final:??? ICPC China-Final:??? To do List: 所有人需要提高效率 减小罚时 三人组队训练时必须用指定Ubuntu电脑敲题,其他两台电脑只能读题.读代码 为提升代码能力,poursoul和_ilovelife尽量做到每天solo一套简单GYM,也可以视情

我的ACM 之大一

当我开始写文章时,已经快12点了,为什么不睡觉?因为还有半小时有CF div2 . 趁着现在有空,有感而发,回顾我的ACM之大一.我第一次接触ACM是在叶老师的宣讲会上,那时就被忽悠了,我单纯地认为参加了ACM才能追上国内高校顶尖学子,不进ACM大学平平淡淡,我就平平庸庸了.于是,那天开始我就开始刷oj水题200道,想赶快加入ACM,结果我是第一个刷到200题的,然而这并没有什么卵用!校赛被虐,杭电比赛也一题惨淡收场,感觉还有很多人比我厉害,我还是个平庸的人:( 后来我参加寒假集训,学了几个使用

我是逗比!!!!!!

set和map都不怎么会用的逗比就这样完挂了第一次cf div2 D #include <cstdio> #include <cstring> #include <set> #include <iostream> #include <algorithm> #include <cstdlib> using namespace std; set<int> a,b,c; int aa[400001],bb[400001]; in

牛客小白月赛2 总结

随便找了牛客网上的一个比赛打,看了一会题目,很快就嘴巴AK了,突然有点小激动,最后发现牛客小白月赛就是手速场,题目难度在CF DIV2 A~C ,总共10题,一不小心又做了一波水题.(可惜嘴巴选手实际只敲了3题的代码,逃) A 数字方阵 构造题,打表找规律,或者随机,详见http://www.cnblogs.com/Surrender/p/8969880.html B 小马过河 解方程 C 真真假假 用map D 虚虚实实 欧拉路径 E 是是非非 nim游戏 F 黑黑白白 树上博弈,用最大.最小