Pagini recente » Cod sursa (job #2062067) | Cod sursa (job #151622) | Cod sursa (job #1494276) | Cod sursa (job #425600) | Cod sursa (job #414557)
Cod sursa(job #414557)
#include <stdio.h>
#define DIM 100001
int v[DIM];
int n,m;
int i,ii,x,sw;
int p,u,mij;
int main(){
FILE*f1=fopen("cautbin.in","r");
FILE*f2=fopen("cautbin.out","w");
fscanf(f1,"%d",&n);
for(i=1; i<=n; i++)
fscanf(f1,"%d",&v[i]);
fscanf(f1,"%d",&m);
for(ii=1; ii<=m; ii++){
fscanf(f1,"%d",&sw);
fscanf(f1,"%d",&x);
p = 1,u = n;
switch(sw){
case 0:
while(p <= u){
mij = p + (u - p)/2;
if(x < v[mij])
u = mij - 1;
else
p = mij + 1;
}
if(x == v[u])
fprintf(f2,"%d\n",u);
else
fprintf(f2,"-1\n");
break;
case 1:
while(p <= u){
mij = p + (u - p)/2;
if(x < v[mij])
u = mij - 1;
else
p = mij + 1;
}
if(v[u] == x)
fprintf(f2,"%d\n",u);
else
fprintf(f2,"%d\n",p);
break;
case 2:
while(p <= u){
mij = p + (u - p)/2;
if(x <= v[mij])
u = mij - 1;
else
p = mij + 1;
}
if(v[p] == x)
fprintf(f2,"%d\n",p);
else
fprintf(f2,"%d\n",u);
break;
}
}
fclose(f1);
fclose(f2);
return 0;
}