Pagini recente » Cod sursa (job #2116954) | Cod sursa (job #998806) | Cod sursa (job #681634) | Cod sursa (job #1030220) | Cod sursa (job #2168422)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
const int NMAX = 100005;
int a[NMAX], n;
int binar1(int x)
{
int st = 1;
int dr = n;
int mij;
while (st <= dr)
{
mij = (st + dr) / 2;
if (a[mij] <= x)
st = mij + 1;
else
dr = mij - 1;
}
mij = (st + dr) / 2;
if (a[mij] > x)
mij--;
if (a[mij] == x)
return mij;
return -1;
}
int binar2(int x)
{
int st = 1;
int dr = n;
int mij;
while (st < dr)
{
mij = (st + dr) / 2;
if (a[mij] <= x)
st = mij + 1;
else
dr = mij;
}
mij = (st + dr) / 2;
if (a[mij] > x)
mij--;
return mij;
}
int binar3(int x)
{
int st = 1;
int dr = n;
int mij;
while (st < dr)
{
mij = (st + dr) / 2;
if (a[mij] < x)
st = mij + 1;
else
dr = mij;
}
mij = (st + dr) / 2;
if (a[mij] < x)
mij++;
return mij;
}
int main()
{
f >> n;
for (int i = 1; i <= n; i++)
f >> a[i];
int m;
f >> m;
for (int i = 1; i <= m; i++)
{
int v, k;
f >> v >> k;
if (v == 0)
g << binar1(k) << "\n";
else
if (v == 1)
g << binar2(k) << "\n";
else
g << binar3(k) << "\n";
}
}