Pagini recente » Cod sursa (job #434177) | Cod sursa (job #2339011) | Cod sursa (job #2463021) | Cod sursa (job #3194199) | Cod sursa (job #418552)
Cod sursa(job #418552)
#include <cstdio>
int v[100001],n;
int cb(int a[],int b);
int cb_0(int a[],int b);
int cb_1(int a[],int b);
int cb_2(int a[],int b);
void read();
int main()
{
int s,c,aux,m;
read();
scanf("%d",&m);
for(int i = 0;i < m;i++)
{
scanf("%d %d",&s,&c);
if(s == 0)
{
aux = cb(v,c);
printf("%d\n",cb_0(v,aux));
}
else if(s == 1)
{
aux = cb(v,c);
printf("%d\n",cb_1(v,aux));
}
else if(s == 2)
{
aux = cb(v,c);
printf("%d\n",cb_2(v,aux));
}
}
return 0;
}
void read()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
scanf("%d",&v[i]);
}
}
int cb(int a[],int b)
{
int st,dr,mij;
st = 0;dr = n;
while(st <= dr)
{
mij = (st + dr) / 2;
if(b == a[mij]) return mij;
if(b > a[mij])
st = mij + 1;
else
dr = mij - 1;
if(st > dr) return -1;
}
return -1;
}
int cb_0(int a[],int b)
{
while(a[b] == a[b+1])
{
b++;
}
return b;
}
int cb_1(int a[],int b)
{
int bla = 0;
while(a[b] == a[b+1])
{
b++;
bla++;
}
if(bla > 0)
return b;
else
{
while(a[b] == a[b-1])
b--;
return b;
}
}
int cb_2(int a[],int b)
{
while(a[b] == a[b-1])
{
b--;
}
return b;
}