Pagini recente » Cod sursa (job #2109698) | Cod sursa (job #3211268)
#include <bits/stdc++.h>
#include <unordered_map>
#define nmax 100005
#define MOD 666013
#define INF 2012345678
#define ll long long
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n;
int a[nmax];
// cea mai din drp val <= x
int CB(int x)
{
int st, dr, mij, p;
st = 1; dr = n; p = -1;
while (st <= dr)
{
mij = (st + dr) / 2;
if (a[mij] <= x)
{
p = mij;
st = mij + 1;
}
else
dr = mij - 1;
}
return p;
}
// cea mai din stg val >= x
int CB2(int x)
{
int st, dr, mij, p;
st = 1; dr = n; p = -1;
while (st <= dr)
{
mij = (st + dr) / 2;
if (a[mij] >= x)
{
p = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
return p;
}
int main()
{
int i, Q, t, x, y, z;
fin >> n;
for (i = 1; i <= n; i++)
fin >> a[i];
fin >> Q;
while (Q--)
{
fin >> t >> x;
y = CB(x);
z = CB2(x);
if ((t == 0 && a[y] == x) || t == 1)
fout << y << "\n";
else
fout << z << "\n";
}
fin.close();
fout.close();
return 0;
}