LightOJ1088

原来二分还可以这么查找:

//A
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAXN 50010

int Point[MAXN*2];

int main()
{
    int i;
    int n,q;
    int kase,casenum;
    int l,r;
    int ans;

    scanf("%d",&casenum);
    kase=0;
    while(casenum--)
    {
        scanf("%d%d",&n,&q);
        memset(Point,0,sizeof(Point));
        for(i=1;i<=n;i++)
            scanf("%d",&Point[i]);
        printf("Case %d:\n",++kase);
        while(q--)
        {
            scanf("%d%d",&l,&r);
            ans=upper_bound(Point+1,Point+1+n,r)-lower_bound(Point+1,Point+1+n,l);
            printf("%d\n",ans);
        }
    }
    return 0;
}

注意upper_bound和lower_bound的边界的处理

猜你喜欢

转载自blog.csdn.net/fx714848657/article/details/82055113
今日推荐