Pagini recente » Cod sursa (job #808596) | Cod sursa (job #1411958) | Cod sursa (job #218678) | Cod sursa (job #92786) | Cod sursa (job #1148226)
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001], i, n, m, c, lo, hi, mid, x;
int cautbin2(int val){
lo = 1; hi = n;
while (lo < hi){
mid = lo + (hi - lo) / 2;
if (v[mid] >= val){
while (v[mid] >= val)
mid--;
return mid + 1;
} else if (v[mid] < val)
lo = mid + 1;
}
}
int cautbin1(int val){
lo = 1; hi = n;
while (lo < hi){
mid = lo + (hi - lo) / 2;
if (v[mid] <= val){
while (v[mid] <= val)
mid++;
return mid - 1;
}
else
hi = mid - 1;
}
}
int cautbin(int val){
lo = 1; hi = n;
while (lo < hi){
mid = lo + (hi - lo) / 2;
if (v[mid] == val){
while (v[mid] == val)
mid++;
return mid - 1;
} else if (v[mid] < val)
lo = mid + 1;
else
hi = mid - 1;
}
}
int main(){
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for (i = 1; i <= m; i++){
fin >> c;
if (c == 0){
fin >> x;
fout << cautbin(x) << '\n';
}
if (c == 1){
fin >> x;
fout << cautbin1(x) << '\n';
}
if (c == 2){
fin >> x;
fout << cautbin2(x) << '\n';
}
}
}