Pagini recente » Cod sursa (job #2901995) | Cod sursa (job #1159327) | Cod sursa (job #1846703) | Cod sursa (job #1305470) | Cod sursa (job #2608731)
#include <iostream>
#include <fstream>
using namespace std;
int cb0(int st, int dr, int v[], int n, int val)
{
int mij;
while (st <= dr)
{
mij = st + (dr - st)/2;
if (v[mij] <= val)
st = mij + 1;
else
dr = mij - 1;
}
mij = st + (dr - st)/2;
if (v[mij] > val)
mij--;
if (v[mij] == val)
return mij;
return -1;
}
int cb1(int st, int dr, int v[], int n, int val)
{
int mij;
while (st < dr)
{
mij = st + (dr - st)/2;
if (v[mij] <= val)
st = mij + 1;
else
dr = mij;
}
mij = st + (dr - st)/2;
if (v[mij] > val)
mij--;
return mij;
}
int cb2(int st, int dr, int v[], int n, int val)
{
int mij;
while (st < dr)
{
mij = st + (dr - st)/2;
if (v[mij] < val)
st = mij + 1;
else
dr = mij;
}
mij = st + (dr - st)/2;
if (v[mij] < val)
mij++;
return mij;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, v[100001], i, x, m, opt;
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for (i = 1; i <= m; i++)
{
fin >> opt >> x;
if (opt == 0)
fout << cb0(1, n, v, n, x) << endl;
else
if (opt == 1)
fout << cb1(1, n, v, n, x) << endl;
else
if (opt == 2)
fout << cb2(1, n, v, n, x) << endl;
}
fin.close();
fout.close();
return 0;
}