Pagini recente » Cod sursa (job #2616154) | Cod sursa (job #2398142) | Cod sursa (job #3174475) | Cod sursa (job #1183606) | Cod sursa (job #2836236)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
void bin0(int v[100001], int n, int a,int& poz)
{
int st = 1, dr = n, mij;
while (st <= dr)
{
mij = (st + dr) / 2;
if (v[mij] == a)
poz = mij;
if (v[mij] <= a)
st = mij + 1;
if (v[mij] > a)
dr = mij - 1;
}
}
void bin1(int v[100001], int n, int a, int& poz)
{
int st = 1, dr = n, mij;
while (st <= dr)
{
mij = (st + dr) / 2;
if (v[mij] <= a)
poz = mij;
if (v[mij] <= a)
st = mij + 1;
if (v[mij] > a)
dr = mij - 1;
}
}
void bin2(int v[100001], int n, int a, int& poz)
{
int st = 1, dr = n, mij;
while (st <= dr)
{
mij = (st + dr) / 2;
if (v[mij] >= a)
poz = mij;
if (v[mij] < a)
st = mij + 1;
if (v[mij] >= a)
dr = mij - 1;
}
}
int v[100001];
int main()
{
int n, m;
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for (int i = 1; i <= m; i++)
{
int cer,x,poz=-1;
fin >> cer >> x;
if (cer == 0)
{
bin0(v, n, x, poz);
fout << poz << '\n';
}
if (cer == 1)
{
bin1(v, n, x, poz);
fout << poz << '\n';
}
if (cer == 2)
{
bin2(v, n, x, poz);
fout << poz << '\n';
}
}
}