Pagini recente » Cod sursa (job #816379) | Cod sursa (job #2586193) | Cod sursa (job #423758) | Cod sursa (job #2516622) | Cod sursa (job #563697)
Cod sursa(job #563697)
# include <fstream.h>
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int n, m, a[100005], i, t, X, val;
int bs1 (int find, int c){
int i, nr = val;
for (i = 1; nr > 0; nr >>= 1){
if (i + nr <= n)
if (a[i + nr] <= find){
i += nr;
}
}
if (c == 0){
if (a[i] == find)
return i;
return -1;
}
return i;
}
int bs2 (int find){
int i, nr = val;
for (i = n; nr > 0; nr >>= 1){
if (i - nr >= 0)
if (a[i - nr] >= find){
i -= nr;
}
}
return i;
}
int main (){
f >> n;
for (val = 1; val <= n; val <<= 1);
for (i = 1; i <= n; ++i)
f >> a[i];
for (f >> m; m > 0; --m){
f >> t >> X;
if (t < 2)
g << bs1 (X, t);
else
g << bs2 (X);
g << '\n';
}
g.close ();
return 0;
}