Pagini recente » Cod sursa (job #3208324) | Cod sursa (job #1532611) | Cod sursa (job #3160986) | Cod sursa (job #3192986) | Cod sursa (job #578623)
Cod sursa(job #578623)
#include<fstream>
using namespace std;
ifstream f1("cautbin.in");
ofstream f2("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 (){
f1>> n;
for (val = 1; val <= n; val <<= 1);
for (i = 1; i <= n; ++i)
f1>> a[i];
for (f1 >> m; m > 0; --m){
f1>> t >> X;
if (t < 2)
f2<< bs1 (X, t);
else
f2<< bs2 (X);
f2 << '\n';
}
return 0;
}