Pagini recente » Cod sursa (job #2805637) | Cod sursa (job #1912514) | Cod sursa (job #1287032) | Cod sursa (job #998825) | Cod sursa (job #1264071)
#include <fstream>
using namespace std;
int a[100002],i,n,m,c,x,p1,p2,mij;
int main()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in>>n;
for(i=1;i<=n;i++)
in>>a[i];
in>>m;
for(i=1;i<=m;i++)
{
in>>c>>x;
p1=1;
p2=n;
if(c==0)
{
while(p1<p2)
{
mij=(p1+p2)/2;
if(x>=a[mij])
p1=mij+1;
else
p2=mij-1;
}
if(a[p1]>x)p1--;
if(a[p1]==x&&p1>=1)
out<<p1<<endl;
else
out<<-1<<endl;
}
if(c==1)
{
while(p1<p2)
{
mij=(p1+p2)/2;
if(x>=a[mij])
p1=mij+1;
else
p2=mij-1;
}
if(a[p1]>x)p1--;
if(a[p1]<=x&&p1>=1)out<<p1<<endl;
}
if(c==2)
{
while(p1<p2)
{
mij=(p1+p2)/2;
if(x>a[mij])
{
p1=mij+1;
}
else p2=mij-1;
}
if(a[p1]<x)p1++;
if(a[p1]>=x )out<<p1<<endl;
}
}
out.close();
in.close();
return 0;
}