Pagini recente » Cod sursa (job #1980585) | Cod sursa (job #1393839) | Cod sursa (job #549119) | Cod sursa (job #2150270) | Cod sursa (job #3265036)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001];
int CautBin(int st, int dr, int val)
{
while (st<dr)
{
int mij = (st+dr)/2;
if (v[mij]>=val)
{
dr = mij;
}
else
{
st = mij+1;
}
}
return st;
}
int main()
{
int n,m,c,val;
in>>n;
for (int i=1; i<=n; i++)
{
in>>v[i];
}
in>>m;
for (int i=1; i<=m; i++)
{
in>>c>>val;
if (c==0)
{
int j = CautBin(1,n,val);
if (v[j]!=val)
{
out<<-1<<'\n';
}
else
{
while (v[j+1]==val)
j++;
out << j << '\n';
}
}
else if (c==1)
{
int j = CautBin(1,n,val);
if (v[j]!=val)
{
out<<j-1<<'\n';
}
else
{
while (v[j+1]==val)
j++;
out << j << '\n';
}
}
else if (c==2)
{
int j = CautBin(1,n,val);
if (v[j]!=val)
{
out<<j<<'\n';
}
else
{
while (v[j-1]==val)
j--;
out << j << '\n';
}
}
}
return 0;
}