Pagini recente » Cod sursa (job #250845) | Cod sursa (job #3231590) | Cod sursa (job #75345) | Cod sursa (job #3266534) | Cod sursa (job #842133)
Cod sursa(job #842133)
#include <stdio.h>
#define MAXN 100001
int N,M;
int v[MAXN];
int cautaElement(int x)
{
int st,dr,mid;
st = 1; dr = N;
int pos=-1;
while(st <= dr){
mid = (st+dr)/2;
if( v[mid] < x ){
st = mid+1;
}
else if( v[mid] == x){
st = mid+1;
pos = mid;
}
else{
dr = mid-1;
}
}
return pos;
}
int cautaElementMaximMaiMic(int x)
{
int st,dr,mid;
st = 1; dr = N;
int pos=1;
while(st <= dr){
mid = (st+dr)/2;
if( v[mid] > x ){
dr = mid-1;
}
else{
pos = mid;
st = mid+1;
}
}
return pos;
}
int cautaElementMinimMaiMare(int x)
{
int st,dr,mid;
st = 1; dr = N;
int pos=N;
while(st <= dr){
mid = (st+dr)/2;
if( v[mid] < x ){
st = mid+1;
}
else{
dr = mid-1;
pos = mid;
}
}
return pos;
}
int main(int argc, char* argv[])
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&N);
int i,tip,el;
for(i=1;i<=N;i++)
scanf("%d",&v[i]);
scanf("%d",&M);
for(i=1;i<=M;i++){
scanf("%d %d",&tip,&el);
switch(tip){
case 0: printf("%d\n",cautaElement(el));
break;
case 1: printf("%d\n",cautaElementMaximMaiMic(el));
break;
case 2: printf("%d\n",cautaElementMinimMaiMare(el));
break;
}
}
return 0;
}