Pagini recente » Cod sursa (job #1692819) | Cod sursa (job #2581680) | Cod sursa (job #408571) | Cod sursa (job #3138268) | Cod sursa (job #2889433)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m;
long long v[100001];
int a, t;
int pozX(int st, int dr, int x)
{
int mij;
while(st <= dr)
{
mij = (st + dr) / 2;
if(v[mij] <= x)
st = mij + 1;
else
dr = mij - 1;
}
if(v[dr] == x)
return dr;
else
return -1;
}
int pozMax(int st, int dr, int x)
{
int mij;
while(st <= dr)
{
mij = (st + dr) / 2;
if(v[mij] <= x)
st = mij + 1;
else
dr = mij - 1;
}
return dr;
}
int pozMin(int st, int dr, int x)
{
int mij;
while(st <= dr)
{
mij = (st + dr) / 2;
if(v[mij] < x)
st = mij + 1;
else
dr = mij - 1;
}
return st;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
while(m)
{
fin >> t >> a;
if(t == 0)
fout << pozX(1, n, a) << '\n';
else if(t == 1)
fout << pozMax(1, n, a) << '\n';
else
fout << pozMin(1, n, a) << '\n';
m--;
}
}