Pagini recente » Cod sursa (job #2112057) | Cod sursa (job #411115) | Cod sursa (job #2745930) | Cod sursa (job #2773898) | Cod sursa (job #2071977)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,m,v[100001],x,sol[100001],mx = -1;
int caut_bin0(int st,int dr,int x)
{
int mij = (st + dr) / 2,cnt = 0;
while (st <= dr)
{
mij = (st + dr) / 2;
if (x >= v[mij])
st = mij + 1;
else
dr = mij - 1;
}
mij = (st + dr) / 2;
if (v[mij] > x)
--mij;
if (v[mij] == x)
return mij;
return -1;
}
int caut_bin1(int st,int dr,int x)
{
int mij = (st + dr) / 2;
while (st < dr)
{
mij = (st + dr) / 2;
if (v[mij] <= x)
st = mij + 1;
else
dr = mij;
}
mij = (st + dr) / 2;
if (v[mij] > x)
--mij;
return mij;
}
int caut_bin2(int st,int dr,int x)
{
int mij = (st + dr) / 2;
while (st < dr)
{
mij = (st + dr) / 2;
if (v[mij] < x)
st = mij + 1;
else
dr = mij;
}
mij = (st + dr) / 2;
if (x > v[mij])
++mij;
return mij;
}
int aux;
int main()
{
in>>n;
for (int i = 1; i <= n; ++i)
in>>v[i];
in>>m;
for (int i = 1; i <= m; ++i)
{
in>>aux>>x;
if (aux == 0)
out<<caut_bin0(1,n,x)<<"\n";
if (aux == 1)
out<<caut_bin1(1,n,x)<<"\n";
if (aux == 2)
out<<caut_bin2(1,n,x)<<"\n";
}
return 0;
}