二分查找lower_bound

晋级人数

http://www.nowcoder.com/questionTerminal/31a1d7926cd947cc907de60ba8192b6c

#include<bits/stdc++.h>
using namespace std;


int n,x;
int main()
{
    while( ~scanf("%d%d",&n,&x) )
    {
        vector<int> solve(n);
        for(int i=0; i<n; ++i)
        {
            scanf("%d",&solve[i]);
        }
        sort( solve.begin(), solve.end() );
        int pos=(n-1)-(x-1);//pos

        if( 0==solve[pos] )
        {
            while( pos<n )
            {
                if( 0!=solve[pos] )
                {
                    break;
                }
                ++pos;
            }
            if( pos==n )
            {
                printf("0\n");
            }
            else
            {
                printf("%d\n", (n-pos) );
            }
        }
        else
        {
            vector<int>::iterator it=lower_bound( solve.begin(), solve.end(), solve[pos] );

            int need=it-solve.begin();
            printf("%d\n", n-need );
        }
    }


    return 0;
}
全部评论

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务