#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
class mysolve
{
public:
int a[20];
int binary_first(int a[],int len,int key)//第一次出现的位置
{
int left=0;
int right=len-1;
while(left<right)
{
int mid=(left+right)/2;
if(a[mid]<key)
left=mid+1;
else
right=mid;
}
if(a[left]==key)
return left;
return -1;
}
int binary_second(int a[],int len,int key)//最后一次出现的位置
{
int left=0;
int right=len-1;
while(left<right-1)
{
int mid=(left+right)/2;
if(a[mid]>key)
right=mid-1;
else left=mid;
}
if(a[right]==key)
return right;
else if(a[left]==key)
return left;
else return -1;
}
int putong(int a[],int len,int key)
{
int left=0;
int right=len-1;
while(left<=right)
{
int mid=(left+right)/2;
if(a[mid]<key)
left=mid+1;
else if(a[mid]==key)
return mid;
else
right=mid-1;
}
return -1;
}
};
int main()
{
mysolve solve;
int z[20]= {1,2,2,2,2,2,2,2,2,2,3};
memcpy(solve.a,z,sizeof(int)*20);
cout<<solve.binary_first(solve.a,11,2)<<endl;
cout<<solve.binary_second(solve.a,11,2)<<endl;
cout<<solve.putong(solve.a,11,2);
}