Pagini recente » Cod sursa (job #1986094) | Cod sursa (job #1196188) | Cod sursa (job #28260) | Cod sursa (job #1355789) | Cod sursa (job #563692)
Cod sursa(job #563692)
# 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 (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 (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, val >>= 1; m > 0; --m){
f >> t >> X;
if (t < 2)
g << bs1 (X, t);
else
g << bs2 (X);
g << '\n';
}
g.close ();
return 0;
}