Pagini recente » Cod sursa (job #2022318) | Cod sursa (job #337425) | Cod sursa (job #678470) | Cod sursa (job #167730) | Cod sursa (job #2068279)
#include <stdio.h>
#include <stdlib.h>
#define L 16
#define N 100000
int v[N];
int n;
int cautbin0(int x){
int pas, r;
pas = 1<<L;
r=0;
while(pas!=0){
if( r + pas <= n && v[r+pas]<=x)
r+=pas;
pas/=2;
}
if(v[r+pas] == x)
return r;
else
return -1;
}
int cautbin1(int x){
int pas, r;
pas = 1<<L;
r=0;
while(pas!=0){
if(r + pas <=n && v[r+pas]<=x)
r+=pas;
pas/=2;
}
return r;
}
int cautbin2(int x){
int pas, r;
pas = 1<<L;
r=0;
while(pas!=0){
if( r + pas <= n && !(v[r+pas]>=x))
r+=pas;
pas/=2;
}
return r;
}
int main()
{
FILE *f1 = fopen("cautbin.in","r"), *f2 = fopen("cautbin.out","w");
int m, p, x, i;
fscanf(f1,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f1,"%d",&v[i]);
fscanf(f1,"%d",&m);
for(i=1;i<=m;i++){
fscanf(f1,"%d%d",&p,&x);
if(p==0)
fprintf(f2,"%d\n",cautbin0(x));
if(p==1)
fprintf(f2,"%d\n",cautbin1(x));
if(p==2)
fprintf(f2,"%d\n",cautbin2(x));
}
return 0;
}