Pagini recente » Cod sursa (job #1080501) | Cod sursa (job #2511830) | Cod sursa (job #1527941) | Cod sursa (job #1206042) | Cod sursa (job #1330186)
#include <fstream>
using namespace std;
int caut(int A[],int x,int imin,int imax)
{
int imid;imid=imin+(imax-imin)/2;
if(imin>imax)
return -1;
else
{if(A[imid]==x)
return imid;
if(A[imid]>x)
return caut(A,x,imin,imid-1);
if(A[imid]<x)
return caut(A,x,imid+1,imax);
else return imid;}
}
int main()
{ifstream f("cautarebin.in");
ofstream g("cautarebin.out");
int i,x,nr,A[100000],M,N,ok,j,nr1;
f>>N;
for(i=1;i<=N;i++)
{
f>>A[i];
}
f>>M;
for(i=0;i<M;i++)
{
f>>nr>>x;
if(nr==0)
{nr1=caut(A,x,0,N-1);ok=1;
if(nr1!=-1)
{for(j=nr1;ok;j++)
if(A[j]!=A[nr1])
{nr1=j-1;g<<nr1<<'\n';ok=0;}}
else g<<-1<<'\n';}
else if(nr==1)
{if(ok==0) g<<nr1<<'\n';
else {while(nr1==-1)
{--x;nr1=caut(A,x,0,N-1);}
g<<nr1<<'\n';}
}
else {if(ok==0)
{for(j=nr1;A[j]==A[nr1];j--);nr1=++j;}
else while(nr1==-1)
{++x;nr1=caut(A,x,0,N-1);}
g<<nr1;}
}
}