Pagini recente » Cod sursa (job #1944525) | Cod sursa (job #1269377) | Cod sursa (job #881071) | Cod sursa (job #827379) | Cod sursa (job #1899812)
#include <fstream>
using namespace std;
int n, x, a[100002], piv, lo, hi;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
void b0(){
lo = 0, hi = n - 1;
while (lo <= hi){
piv = (lo + hi) / 2;
if (a[piv] <= x)
lo = piv + 1;
else
hi = piv - 1;
}
piv = (lo + hi) / 2;
if (a[piv] > x) piv++;
if (a[piv] == x)
fout << piv+1 << "\n";
else
fout << -1 << "\n";
}
void b1(){
lo = 0, hi = n - 1;
while (lo < hi){
piv = (lo + hi) / 2;
if (a[piv] <= x)
lo = piv + 1;
else
hi = piv;
}
piv = (lo + hi) / 2;
if (a[piv] > x)
piv--;
fout << piv+1 << "\n";
}
void b2(){
lo = 0, hi = n - 1;
while (lo < hi){
piv = (lo + hi) / 2;
if (a[piv] < x)
lo = piv + 1;
else
hi = piv;
}
piv = (lo + hi) / 2;
if (a[piv] < x)
piv++;
fout << piv+1 << "\n";
}
int main(){
fin >> n;
for (int i = 0; i < n; i++){
fin >> a[i];
}
int m, c;
fin >> m;
while (m--){
fin >> c >> x;
if (c == 0)
b0();
else if (c == 1)
b1();
else if (c == 2)
b2();
}
fin.close();
fout.close();
return 0;
}