Pagini recente » Cod sursa (job #2980986) | Cod sursa (job #1757988) | Cod sursa (job #2473505) | Cod sursa (job #291782) | Cod sursa (job #1701018)
#include <cstdio>
const int MAX_N = 100000;
int v[MAX_N];
int cautare(int st, int dr, int val) {
int mid;
while(dr - st > 1) {
mid = (st + dr) / 2;
if(val < v[mid])
dr = mid;
else
st = mid;
}
return st;
}
int cautare2(int st, int dr, int val) {
int mid;
while(dr - st > 1) {
mid = (st + dr) / 2;
if(val <= v[mid])
dr = mid;
else
st = mid;
}
return dr;
}
int main() {
int n, i, q, x, tipQuery, poz;
FILE *fin = fopen( "cautbin.in" , "r" );
fscanf(fin, "%d", &n);
for(i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
FILE *fout = fopen( "cautbin.out" , "w" );
fscanf(fin, "%d", &q);
for(i = 0; i < q; i++) {
fscanf(fin, "%d%d", &tipQuery, &x);
if(tipQuery == 0) {
poz = cautare(0, n, x);
if(v[poz] == x)
fprintf(fout, "%d\n", poz + 1);
else
fprintf(fout, "-1\n");
} else if(tipQuery == 1) {
poz = cautare(0, n, x);
fprintf(fout, "%d\n", poz + 1);
} else {
poz = cautare2(-1, n - 1, x);
fprintf(fout, "%d\n", poz + 1);
}
}
fclose( fin );
fclose( fout );
return 0;
}