Pagini recente » Cod sursa (job #690745) | Cod sursa (job #3150345) | Cod sursa (job #2832753) | Cod sursa (job #42491) | Cod sursa (job #419037)
Cod sursa(job #419037)
using namespace std;
#include<cstdio>
int v[100001],n,x;
int caut0 ()
{
int st=1,dr=n;
while(st<=dr){
int mij=st+(dr-st)/2;
if(v[mij]<x)
st=mij+1;
else
if(v[mij]>x)
dr=mij-1;
else
return mij;
}
return -1;
}
int caut1 ()
{
int st=1,dr=n,S;
while(st<=dr){
int mij=st+(dr-st)/2;
if(v[mij]<=x)
S=mij,st=mij+1;
else
dr=mij-1;
}
return S;
}
int caut2 ()
{
int st=1,dr=n,S;
while(st<=dr){
int mij=st+(dr-st)/2;
if(v[mij]>=x)
S=mij,dr=mij-1;
else
st=mij+1;
}
return S;
}
int main ()
{
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 m;
scanf("%d",&m);
while(m){
int tip;
scanf("%d%d",&tip,&x);
switch(tip){
case 0:printf("%d\n",caut0());break;
case 1:printf("%d\n",caut1());break;
case 2:printf("%d\n",caut2());break;
}
--m;
}
return 0;
}