Pagini recente » Cod sursa (job #1250704) | Cod sursa (job #2766079) | Cod sursa (job #231969) | Cod sursa (job #931392) | Cod sursa (job #2645816)
#include <iostream>
#include <fstream>
using namespace std;
ifstream be("cautbin.in");
ofstream ki("cautbin.out");
int binary_0(int a[],int bal,int jobb,int k)
{
int x=-1;
while(bal<=jobb)
{
int m=(bal+jobb)/2;
if(a[m]==k &&a[m+1]!=k){x=m;break;}
else if(k>=a[m]){
bal=m+1;
}
else if(k<a[m])jobb=m-1;
}
return x;
}
int binary_1(int a[],int bal,int jobb,int k)
{
int m;
while(bal<=jobb)
{
int m=(bal+jobb)/2;
if(a[m]==k &&a[m+1]!=k){return m;}
else if(k>=a[m]){
bal=m+1;
}
else if(k<a[m])jobb=m-1;
}
return jobb;
}
int binary_2(int a[],int bal,int jobb,int k)
{
int m;
while(bal<=jobb)
{
int m=(bal+jobb)/2;
if(a[m]==k &&a[m-1]!=k){return m;}
else if(k<=a[m])jobb=m-1;
else if(k>a[m]){
bal=m+1;
}
}
return bal;
}
int main()
{
int n,a[100000],m,k,x;
be>>n;
for(int i=1;i<=n;++i)
{
be>>a[i];
}
be>>m;
for(int i=1;i<=m;++i)
{
be>>x;
be>>k;
if(x==0)ki<<binary_0(a,1,n,k)<<"\n";
else if(x==1)ki<<binary_1(a,1,n,k)<<"\n";
else if(x==2)ki<<binary_2(a,1,n,k)<<"\n";
}
return 0;
}