帮皮皮选人

链接:https://ac.nowcoder.com/acm/contest/635/B
来源:牛客网

帮皮皮选人
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

高考已经开始倒计时了,学校为了减轻大家的压力,决定要举办一个大型的晚会,要求每个班都必须出一个节目。经过投票,高二六班决定出演一个舞蹈节目。为了让这个舞蹈节目效果看起来更好,对同学们的舞蹈技能有一定的要求,假设参演同学的舞蹈技能值递增排序为a1,a2,…am,如果每一个 i (1 <= i <= m-1)都满足 ai+1<=2∗ai,这就可以达到最完美的演出效果。皮皮是高二六班的班长,他现在要汇报班上的参演人数,他想让班上尽可能多的人去参加这个节目,但是他不知道怎么办。

于是他就找到了你,他告诉你班上的总人数和所有人的舞蹈技能值,他希望你能够告诉他,在保证舞蹈节目的演出最完美的情况下,最多可以派多少人出去。

输入描述:

第一行输入一个整数n(1<= n <=2*105),代表皮皮班上的总人数。

第二行输入n个整数,a1,a2,…,an(1 <= ai <= 109),代表皮皮班所有人从低到高排序的舞蹈技能值,保证皮皮班每个人的舞蹈技能值都是独一无二的。

输出描述:

输入一个整数,代表在保证舞蹈节目的演出最完美的情况下,皮皮班上能参演这个节目的最多人数。
示例1

输入

复制
10
1 2 5 6 7 10 21 23 24 49

输出

复制
4
示例2

输入

复制
6
4 7 12 100 150 199

输出

复制
3
#include<cstdio>
#include<algorithm>
using namespace std;

int n,a,b,sum,maxx;

int main(){
    sum=1;
    maxx=-0x3f3f3f3f;
    scanf("%d%d",&n,&a);
    if(n==1){
        maxx=1;
    }
    for(int i=2;i<=n;i++){
        scanf("%d",&b);
        if(2*a>=b){
            a=b;
            sum++;
        }else{
            a=b;
            sum=1;
        }
        maxx=max(maxx,sum);
    }
    printf("%d
",maxx);
    return 0;
}
原文地址:https://www.cnblogs.com/qqshiacm/p/10701947.html