P2777 [AHOI2016初中组]自行车比赛

题目描述

小雪非常关注自行车比赛,尤其是环滨湖自行车赛。一年一度的环滨湖自行车赛,需要选手们连续比赛数日,最终按照累计得分决出冠军。今年一共有 N 位参赛选手。每一天的比赛总会决出当日的排名,第一名的选手会获得 N 点得分,第二名会获得 N-1 点得分,第三名会获得 N-2 点得分,依次类推,最后一名会获得 1 点得分。保证没有选手会排名相同。

在之前的数日较量中, N 位选手已经分别累计了一些分数。现在即将开始的是最后一天的比赛。小雪希望知道有多少位选手还有可能获得最终的冠军,也就是说还有多少选手有可能通过最后一天的比赛获得累计总分第一名

输入输出格式

输入格式:

 

第一行输入一个整数 N,表示参赛选手总数,保证 3<=N<=300000。

之后 N 行,其中第 i 行输入一个整数 B[i]表示第 i 位选手已经获得的累计分数,满足0<=B[i]<=2000000。

 

输出格式:

 

输出只有一行,只输出一个整数,表示有多少位选手有可能获得最终的冠军。

输入输出样例

输入样例#1: 复制
3
8
10
9
输出样例#1: 复制
3
输入样例#2: 复制
5
15
14
15
12
14
输出样例#2: 复制
4

说明

对于 20%的数据, 3<=N<=600。

对于 50%的数据, 3<=N<=10000。

对于 100%的数据, 3<=N<=300000 且 0<=B[i]<=2000000。

OMG!!!

臭猴砸给我回信了!!!

结果远不是我想象的那样,,

天呐,

女人心,海底针。。

恐怖,

还好我是条汉子~~

OMG,这个题太神奇了!!!

练贪心的好题啊!!!

这思路,,

无敌啊!!!

要我,

要我如何能想到啊!!!

还有,要理解好题意,,,

认真审题!!!

样例也会有误!!!

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 int n,a[300002];
 7 
 8 int main()
 9 {
10     scanf("%d",&n);
11     for(int i=1; i<=n; i++)
12         scanf("%d",&a[i]);
13     sort(a+1,a+n+1);
14     for(int i=1; i<=n; i++)
15     {
16         if(a[i]+n>a[n])
17         {
18             printf("%d",n-i+1);
19             return 0;
20         }
21     }
22     printf("0");
23     return 0;
24 }

如果你不开心,那我就把右边这个帅傻子分享给你吧, 

你看,他这么好看,那么深情的望着你,你还伤心吗? 

真的!这照片盯上他五秒钟就想笑了。 

一切都会过去的。

猜你喜欢

转载自www.cnblogs.com/Mary-Sue/p/9435577.html