m0_74813323 2023-01-24 15:28 采纳率: 100%
浏览 60
已结题

K11308 科丁博士能出牌吗

K11308 科丁博士能出牌吗
题目描述
科丁星人的进化程度远远领先于地球人,他们的扑克牌也和地球上的扑克牌不一样。科丁星的扑克牌有10^9 种牌,牌上的数字分别从1到10^9 (没有J Q K和大小王)。不像我们地球人每种牌有4张,科丁星的扑克牌每种牌有8张,也就是说科丁星的每副牌有8*10^9 张。科丁星打牌的规则也是牌面上数字越大的牌越厉害。
科丁博士很喜欢打牌,他的牌打的也很好。今天科丁博士又约了实验室的同事一起打牌。科丁博士习惯于按照从左到右,从小到大的顺序拿牌。科丁博士的这一局已经开始了一段时间,科丁博士现在手上有n张牌。科丁博士还是按照他一贯的喜好进行拿牌。科丁博士的上家出了4张x, 现在轮到科丁博士出牌了,如果科丁博士手上所有大于x的牌中有某种牌不少于4张,那么科丁博士就可以压过上家,请你帮助科丁博士算一算他手上的牌能否压过上家? (1≤ n,≤10^6, 1≤ x,≤10^9)。

输入格式
第1行:两个整数n, x(分别代表科丁博士手上牌的数量和科丁博士上家出牌的大小)
第2到第n+1行, n个整数,分别代表科丁博士手上的牌。

输出格式
一行:如果科丁博士能压过上家输出1,否则输出0

输入输出样列
输入样例1:
6 5
1
10
10
10
10
10
输出样例1:
1
输入样例2:
5 10
1
3
10
10
10
输出样例2:
0
【耗时限制】1000ms 【内存限制】128MB

  • 写回答

2条回答 默认 最新

  • 小伟l 2023-01-24 16:33
    关注

    代码如下:

    
    #include<bits/stdc++.h>
    using namespace std;
    int a[9000000];
    int lower(int a[],int l,int r,int x){
        while(l<r){
            int m=(l+r)/2;
            if(a[m]>=x)    r=m;
            else if(a[m]<x)    l=m+1;
        }
        return l;
    }
    int upper(int a[],int l,int r,int x){
        while(l<r){
            int m=(l+r)/2;
            if(a[m]>x)    r=m;
            else if(a[m]<=x)    l=m+1;
        }
        return l;
    }
    int main(){
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        sort(a+1,a+1+n);
        for(int i=n;i>=1;i--){
            if(upper(a,1,n+1,a[i])-lower(a,1,n+1,a[i])>=4){
                cout<<1;
                return 0;
            }
        }
        cout<<0;
        return 0;
    }
    

    求采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月7日
  • 已采纳回答 1月30日
  • 创建了问题 1月24日

悬赏问题

  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了