Cod sursa(job #442046)
Utilizator | Data | 13 aprilie 2010 20:23:53 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include<fstream.h>
int main ()
{
ifstream fcin("cautbin.in");
ofstream fcout("cautbin.out");
int n,i,m,v[100001],a,b,y,x,piv;
fcin>>n;
for(i=1;i<=n;i++)
fcin>>v[i];
fcin>>m;
for(i=1;i<=m;i++)
{fcin>>y>>x;
piv=n/2+n%2;a=1;b=n;
while(a<b)
{if(v[piv]<=x)
a=piv;
else b=piv;
if(v[(a+b)/2+(a+b)%2]<=x)piv=(a+b)/2+(a+b)%2;
else break;}
if(y==0||y==1)fcout<<piv<<'\n';
else {while(v[piv]==x)piv--;
fcout<<piv+1<<'\n';}
}
return 0;
}