Pagini recente » Cod sursa (job #172688) | Cod sursa (job #304810) | Cod sursa (job #1273203) | Cod sursa (job #519730) | Cod sursa (job #1684661)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n, m, a, b, v[100004];
void bin0(int x)
{
int st, dr, piv;
st = 1;
dr = n;
while(st <= dr)
{
piv = st + (dr - st) / 2;
if(v[piv] <= x) st = piv + 1;
else dr = piv - 1;
}
if(v[dr] == x) out << dr << "\n";
else out << "-1" << "\n";
}
void bin1(int x)
{
int st, dr, piv;
st = 1;
dr = n;
while(st <= dr)
{
piv = st + (dr - st) / 2;
if(v[piv] <= x) st = piv + 1;
else dr = piv - 1;
}
out << dr << "\n";
}
void bin2(int x)
{
int st, dr, piv;
st = 1;
dr = n;
while(st <= dr)
{
piv = st + (dr - st) / 2;
if(v[piv] >= x) dr = piv - 1;
else st = piv + 1;
}
out << st << "\n";
}
int main()
{
in >> n;
for(int i = 1; i <= n; i++) in >> v[i];
in >> m;
for(int i = 1; i <= m; i++)
{
in >> a >> b;
if(a == 0) bin0(b);
if(a == 1) bin1(b);
if(a == 2) bin2(b);
}
return 0;
}