Pagini recente » Cod sursa (job #1737142) | Cod sursa (job #1288652) | Cod sursa (job #152430) | Cod sursa (job #1799594) | Cod sursa (job #442307)
Cod sursa(job #442307)
#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(v[piv]!=x&&b-a>1)
{if(v[piv]<=x)
a=piv;
else b=piv;
piv=(a+b)/2;}
if(y==0&&v[piv]==x)while(v[piv+1]==x&&piv+1<=n)piv++;
else if(y==1&&v[piv]<=x)while(v[piv+1]<=x&&piv+1<=n)piv++;
else if(y==2&&v[piv]>=x)while(v[piv-1]>=x&&piv-1>=1)piv--;
else if(y==0){if(v[b]!=x)piv=-1;else piv=b;}
else if(y==2&&v[piv]<x)while(v[piv]<x)piv++;
fcout<<piv<<'\n';
}
return 0;
}