Pagini recente » Cod sursa (job #1710586) | Cod sursa (job #640047) | Cod sursa (job #573005) | Cod sursa (job #728068) | Cod sursa (job #2495289)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001];
void a0 (int x, int st, int dr)
{
int raspuns;
int mid = (st + dr) / 2;
while (st != dr)
{
if (v[mid] > x)
{
dr = mid;
}
else
{
st = mid + 1;
if (v[mid] == x)
raspuns = mid;
}
if (raspuns != mid)
raspuns = -1;
mid = (st + dr) / 2;
}
g<<raspuns<<'\n';
}
void a1 (int x, int st, int dr)
{
int raspuns;
int mid = (st + dr) / 2;
while (st < dr)
{
if (v[mid] > x)
dr = mid;
else
{
st = mid + 1;
raspuns = mid;
}
mid = (st + dr) / 2;
}
g<<raspuns<<'\n';
}
void a2(int x, int st, int dr)
{
int raspuns;
int mid = (st + dr) / 2;
while (st != dr)
{
if (v[mid] < x)
{
st = mid + 1;
}
else
{
dr = mid;
raspuns = mid;
}
mid = (st + dr ) / 2;
}
g<<raspuns<<'\n';
}
int main()
{
int n, x, dr, st, mid, a, m, v[100000];
f>>n;
for (int i = 1; i <= n; i++)
{
f>>v[i];
}
f>>m;
while (m > 0)
{
f>>a>>x;
st = 1;
dr = n + 1;
mid = (st + dr) / 2;
if (a == 1)
{
a1(x, st, dr);
}
if (a == 0)
{
a0(x, st, dr);
}
if (a == 2)
{
a2(x, st, dr);
}
m = m - 1;
}
return 0;
}