Pagini recente » Cod sursa (job #3005160) | Borderou de evaluare (job #2163177) | Cod sursa (job #1403971)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int m,y,n,a[100000],pz,p,i,x,mij,ls,ld,ok,var,poz;
int main()
{
f>>n;for(i=1;i<=n;i++) f>>a[i];f>>m;
for(;m;m--)
{
f>>y>>x;
ls=1;ld=n;ok=1;
mij=(ls+ld)/2;
while(ls<=ld&&ok)
{
if(a[mij]==x) {ok=0;p=mij;}
else if(x>a[mij]) {ls=mij+1;mij=(ls+ld)/2;}
else if(x<a[mij]) {ld=mij-1;mij=(ls+ld)/2;}
}
if(y==0) if(ok==1) g<<-1<<'\n';
ok=1;var=1;
for(i=p+1;i<=n;i++) if(a[i]==x) {pz=i;ok=0;}
if(y==0) g<<pz<<'\n';
if(y==1) {
if(ok==0) g<<pz<<'\n';
else g<<p<<'\n';
}
poz=p;
if(y==2)
{
while(a[poz]==a[poz-1]) poz--;
g<<poz;
}
}
}