Pagini recente » Cod sursa (job #2375960) | Cod sursa (job #298106) | Cod sursa (job #627974) | Cod sursa (job #1114281) | Cod sursa (job #2063026)
#include <iostream>
#include <fstream>
#define Nmax 100003
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
int n,v[Nmax];
int Cautare_Binara (int s,int d,int x)
{
int i,j,mij=0;
i=s;
j=d;
while (i<=j)
{ mij=(i+j)/2;
if (v[mij]==x) return mij;
else if (x<v[mij]) j=mij-1;
else if (x>v[mij]) i=mij+1;
}
return i;
}
int main()
{
int i,k,x,y;
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
fin>>k;
for (i=1;i<=k;i++)
{ int p;
fin>>x>>y;
if (x==0)
{
p=Cautare_Binara(1,n,y);
if (v[p]==y)
{while (v[p+1]==y) p++;
fout<<p<<"\n";}
else fout<<"-1\n";
}
if (x==1)
{
p=Cautare_Binara(1,n,y);
if (v[p]<=y)
while (v[p+1]<=y&&p<n) p++;
else if (v[p]>y)
{while (v[p-1]>y) p--;
p--;}
fout<<p<<"\n";
}
if (x==2)
{
p=Cautare_Binara(1,n,y);
//fout<<p<<"\n";
if (v[p]>=x)
while (v[p-1]>=y&&p>1) p--;
else if (v[p]<x)
{while (v[p+1]<x) p++;
p++;}
fout<<p<<"\n";
}
}
return 0;
}