Pagini recente » Cod sursa (job #964225) | Borderou de evaluare (job #1567101) | Cod sursa (job #1458237) | Cod sursa (job #362193) | Cod sursa (job #945644)
Cod sursa(job #945644)
#include <fstream>
using namespace std;
int i,instr,mij,st,dr,x,m,a[100001],n,k;
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f >> n;
for (i=1; i<=n; i++)
f >> a[i];
f >> m;
for (i=1; i<=m; i++)
{
f >> instr >> x;
st=1;
dr=n;
if (instr==0)
{
while (st<dr)
{
mij=(st+dr)/2;
if (a[mij]>=x)
st=mij+1;
else dr=mij-1;
}
mij=(st+dr)/2;
if (a[mij]>x)mij--;
if (a[mij]==x)g << mij <<'\n';
else g<< "-1" << '\n';
}
if (instr==1)
{
while (st<=dr)
{
mij=(st+dr)/2;
if (a[mij]>=x)
st=mij+1;
else dr=mij;
}
if (a[mij]>x)mij--;
g << mij << '\n';
}
if (instr==2)
{
while(st<dr)
{
mij=(st+dr)/2;
if(x>a[mij])
st=mij+1;
else
dr=mij;
}
mij=(st+dr)/2;
if(a[mij]<x) mij++;
g << mij;
}
}
return 0;
}