Pagini recente » Cod sursa (job #3280272) | Junior Challenge 2023 Runda 1 | Cod sursa (job #3234682) | Cod sursa (job #228471) | Cod sursa (job #795297)
Cod sursa(job #795297)
#include <stdio.h>
#define NMAX 100005
int n,m,A[NMAX];
void read()
{
scanf("%d",&n);
int i;
for (i=1; i<=n; i++)
scanf("%d",&A[i]);
}
int cb(int val)
{
int i,step;
for (step=1; step<=n; step<<=1);
for (i=0; step; step>>=1)
if (i+step<=n && A[i+step]<=val)
i+=step;
return i;
}
void solve()
{
scanf("%d",&m);
int i,tip,x,poz,poz2;
for (i=1; i<=m; i++)
{
scanf("%d%d",&tip,&x);
poz=cb(x);
if (tip==0)
{
if (A[poz]==x)
printf("%d\n",poz);
else
printf("-1\n");
}
if (tip==1)
printf("%d\n",poz);
if (tip==2)
{
poz2=cb(x-1)+1;
if (A[poz]==x)
printf("%d\n",poz2);
else
printf("%d\n",poz+1);
}
}
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
read();
solve();
return 0;
}