Pagini recente » Cod sursa (job #2831522) | Cod sursa (job #59691) | Cod sursa (job #696358) | Cod sursa (job #2091419) | Cod sursa (job #523368)
Cod sursa(job #523368)
#include<fstream.h>
ifstream f("cautbin.in"); ofstream g("cautbin.out");
int n,i,T,m,p,u,tip,x,poz,a[100001];
int main()
{f>>n; for(i=1 ;i<=n; i++)f>>a[i];
f>>T;
while(T)
{f>>tip>>x;
p=1; u=n; poz=-1;
switch(tip)
{case 0: do
{m=(p+u)/2;
if(a[m]==x)
{poz=m; p=m+1;
while(p<=u)
{m=(p+u)/2;
if(a[m]==x) {poz=m; p=m+1;} else u=m-1;
}
}
else if(a[m]<x) u=m-1; else p=m+1;
}
while(p<=u);
g<<poz<<'\n';
break;
case 1: do
{m=(p+u)/2;
if(a[m]==x)
{poz=m; p=m+1;
while(p<=u)
{m=(p+u)/2;
if(a[m]==x) {poz=m; p=m+1;} else u=m-1;
}
}
else if(a[m]<x) u=m-1; else p=m+1;
}
while(p<=u);
if(poz==-1) poz=u;
g<<poz<<'\n';
break;
case 2: do
{m=(p+u)/2;
if(a[m]==x)
{poz=m; u=m-1;
while(p<=u)
{m=(p+u)/2;
if(a[m]==x) {poz=m; u=m-1;} else p=m+1;
}
}
else if(a[m]<x) u=m-1; else p=m+1;
}
while(p<=u);
if(poz==-1) poz=u;
g<<poz<<'\n';
}
T--;
}
g.close(); return 0;
}