秋林箭

每夜,携酒河上,饮且渔

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#include<iostream>
using namespace std;

int weizhiq(int *list,int length,int start,int end,int k)
{
    int weizhi=-1;
    if(start==end&&list[end]!=k)return -1;
    int mid=(start+end)/2;
    if(mid!=0&&list[mid]==k&&list[mid-1]!=k||mid==0)
        weizhi=mid;
    else if(list[mid]<k)
    {
        weizhi=weizhiq(list,length,mid+1,end,k);
    }
    else if(list[mid]>=k)
    {
        weizhi=weizhiq(list,length,start,mid-1,k);
    }
    return weizhi;
}
int weizhih(int *list,int length,int start,int end,int k)
{
    int weizhi=-1;
    if(start==end&&list[end]!=k)return -2;
    int mid=(start+end)/2;
    if(mid!=length-1&&list[mid]==k&&list[mid+1]!=k||mid==length-1)
        weizhi=mid;
    else if(list[mid]<=k)
    {
        weizhi=weizhih(list,length,mid+1,end,k);
    }
    else if(list[mid]>k)
    {
        weizhi=weizhih(list,length,start,mid-1,k);
    }
    return weizhi;
}

int count(int *list,int length,int k)
{
    int q=weizhiq(list,length,0,length-1,k);
    int h=weizhih(list,length,0,length-1,k);
    return h-q+1;
}
int main()
{
    int a[1000];
    int c;
    int i=0;
    while(cin>>c)
    {
        a[i]=c;
        i++;
        if(cin.get()=='\n')
            break;
    }
    int k;
    cin>>k;    
    cout<<count(a,i,k);
}

 

posted on 2015-08-13 15:12  zhangyee  阅读(137)  评论(0编辑  收藏  举报