#include<stdio.h>
#include<iostream>
#include<vector>
#include<math.h>
#include<algorithm>
using namespace std;
int Gfindf(vector<int>data, int k)
{
if (data.empty())return -1;
int len = data.size();
int begin = 0;
int end = len - 1;
//int mid = (begin + end) / 2;
while(begin<=end)
{
int mid = (begin + end) / 2;
if (data[mid] == k)
{
if (data[mid - 1] != k)return mid;
else
end = mid - 1;
}
else if(data[mid] < k)begin = mid + 1;
else if (data[mid] > k)end = mid - 1;
}
return -1;
}
int Gfindend(vector<int>data, int k)
{
if (data.empty())return -1;
int len = data.size();
int begin = 0;
int end = len - 1;
//int mid = (begin + end) / 2;
while (begin <= end)
{
int mid = (begin + end) / 2;
if (data[mid] == k)
{
if (data[mid + 1] != k)return mid;
else
begin = mid + 1;
}
else if (data[mid] < k)begin = mid + 1;
else if (data[mid] > k)end = mid - 1;
}
return -1;
}
int calnum(vector<int>data, int k)
{
return count(data.begin(), data.end(),k);
}
void main()
{
vector<int>v;
int res=0;
//v.push_front(1);只适用于 list和 deque
v.push_back(3);
v.push_back(1);
v.push_back(3);
v.push_back(0);
v.push_back(7);
v.push_back(3);
v.push_back(8);
v.push_back(3);
sort(v.begin(),v.end());
int g1 = Gfindf(v,3);
int g2 = Gfindend(v, 3);
int g = calnum(v,3);
if(b1>-1&&g2>-1)res=g2-g1+1;
cout << g<< endl;
cout<<res<<endl;
system("pause");
}