Pagini recente » Cod sursa (job #2240257) | Cod sursa (job #2729679) | Cod sursa (job #1350393) | Cod sursa (job #2888150) | Cod sursa (job #1089666)
#include <fstream>
#define NMAX 100005
using namespace std;
FILE* f=freopen("cautbin.in","r",stdin);
FILE* o=freopen("cautbin.out","w",stdout);
int n,m;
int v[NMAX];
int binsearch(int val)
{
int i, step;
for (step = 1; step < n; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < n && v[i + step] <= val)
i += step;
return i;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%d",&v[i]);
scanf("%d",&m);
for(int i=0;i<m;++i)
{
int t,x;
scanf("%d%d",&t,&x);
int p=binsearch(x);
switch(t)
{
case 0:
printf("%d\n",((v[p]==x)?p+1:-1));
break;
case 1:
printf("%d\n",p+1);
break;
case 2:
while(v[p]==x) p-=1;
printf("%d\n",p+2);
break;
}
}
return 0;
}