Pagini recente » Cod sursa (job #3275934) | Cod sursa (job #1903118) | Cod sursa (job #2730595) | Cod sursa (job #1871607) | Cod sursa (job #1162967)
#include <cstdio>
#define nmax 100010
using namespace std;
int n,m,a[nmax];
void citire()
{
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
}
void zero(int x)
{
int st=1,dr=n,mij;
while(st<dr-1)
{
mij=st+(dr-st)/2;
if(x<a[mij])
dr=mij;
else st=mij;
}
if(a[dr]==x)
printf("%d\n",dr);
else if(a[st]==x)
printf("%d\n",st);
else printf("-1\n");
}
void unu(int x)
{
int st=1,dr=n,mij;
while(st<dr-1)
{
mij=st+(dr-st)/2;
if(x<a[mij])
dr=mij;
else st=mij;
}
if(a[dr]<=x)
printf("%d\n",dr);
printf("%d\n",st);
}
void doi(int x)
{
int st=1,dr=n,mij;
while(st<dr-1)
{
mij=st+(dr-st)/2;
if(x<=a[mij])
dr=mij;
else st=mij;
}
if(a[st]>=x)
printf("%d\n",st);
printf("%d\n",dr);
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int op,x,i;
citire();
for(i=1;i<=m;i++)
{
scanf("%d%d",&op,&x);
if(op==0)
zero(x);
else if(op==1)
unu(x);
else doi(x);
}
return 0;
}