Pagini recente » Cod sursa (job #2742158) | Cod sursa (job #18164) | Cod sursa (job #1620607) | Cod sursa (job #1718965) | Cod sursa (job #680819)
Cod sursa(job #680819)
using namespace std;
//#include<cstdlib>
#include<stdio.h>
int v[1005];
int caut0(int val,int dr)
{
int st=1,m,p=0;
while(st<=dr)
{
m=(st+dr)/2;
if(v[m]==val)
{
if(p<m)
p=m;
st=m+1;
}
else
if(val<v[m])
dr=m-1;
else
st=m+1;
}
if(p)
return p;
else
return -1;
}
int caut1(int val,int dr)
{
int st=1,m,p=0;
while(st<=dr)
{
m=(st+dr)/2;
if(v[m]==val)
{
while(v[m]==val)
m++;
return --m;
}
else
if(val<v[m])
dr=m-1;
else
st=m+1;
}
}
int caut2(int val,int dr)
{
int st=1,m,p=0;
while(st<=dr)
{
m=(st+dr)/2;
if(v[m]==val)
{
while(v[m]==val)
m--;
return ++m;
}
else
if(val<v[m])
dr=m-1;
else
st=m+1;
}
}
int main()
{
int i,q,n,m,val;
freopen("cautbin.in","r", stdin);
freopen("cautbin.out","w", stdout);
scanf("%d", &n);
for(i=1;i<=n;i++)
scanf("%d", &v[i]);
scanf("%d", &m);
for(;m!=0;m--)
{
scanf("%d %d", &q, &val);
if(q==0)
printf("%d\n", caut0(val,n));
else
if(q==1)
printf("%d\n", caut1(val,n));
else
printf("%d\n", caut2(val,n));
}
return 0;
}