Nu aveti permisiuni pentru a descarca fisierul grader_test19.ok
Cod sursa(job #1217914)
| Utilizator | Data | 8 august 2014 18:46:56 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.46 kb |
#include <stdio.h>
FILE *f,*g;
#define MAX_N 100001
int v[MAX_N];
int main()
{int n,m,i,pas,t,x,j;
f=fopen("cautbin.in","r");
g=fopen("cautbin.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&m);
for(j=1;j<=m;j++){
fscanf(f,"%d%d",&t,&x);
if(t==0){
i=0;
pas=1<<16;
while(pas>0) {
if (i + pas <= n) {
if (v[i + pas] <= x) {
i = i + pas;
}
}
pas = pas >> 1;
}
if (v[i]==x) {
fprintf(g,"%d\n",i);
} else {
fprintf(g,"-1\n");
}
} else if (t == 1) {
i=0;
pas=1<<16;
while(pas>0) {
if (i + pas <= n) {
if (v[i + pas] <= x) {
i = i + pas;
}
}
pas = pas >> 1;
}
fprintf(g,"%d\n",i);
} else {
i=0;
pas=1<<16;
while(pas>0) {
if (i + pas <= n) {
if (v[i + pas] < x) {
i = i + pas;
}
}
pas = pas >> 1;
}
++i;
fprintf(g,"%d\n",i);
}
}
return 0;
}
