Pagini recente » Cod sursa (job #2039376) | Cod sursa (job #1008845) | Rating Laura Balan (lauraxxx) | Cod sursa (job #1058875) | Cod sursa (job #2055065)
#include <stdio.h>
#include <stdlib.h>
int v[100000];
int main(){
int n, m, c, i, x;
int log=1, lg;
FILE *fin, *fout;
fin=fopen("cautbin.in", "r");
fout=fopen("cautbin.out", "w");
fscanf(fin, "%d", &n);
for(i=0; i<n; i++)
fscanf(fin, "%d", &v[i]);
fscanf(fin, "%d", &m);
while(log<n) log<<=1; ///construim cea mai mare putere mai mare sau egala decat n a lui 2
while(m--){
fscanf(fin, "%d%d", &c, &x);
if(c==2) x--;
lg=log;
for(i=0; lg; lg>>=1)
if(i+lg<n && v[i+lg]<=x)///daca mai adaugam bitul la care ne aflam nu iesim din vector( < n )
i+=lg; ///si daca il adaugam numarul care se afla pe e mai mic sau egal decat valoarea cautata
if(c==0){
if(v[i]!=x) i=-2;
}
else if(c==2 && v[i]<x+1)
i++;
fprintf(fout, "%d\n", i+1);
}
fclose(fin);
fclose(fout);
return 0;
}