Pagini recente » Cod sursa (job #2771061) | Cod sursa (job #2231188) | Cod sursa (job #3169478) | Cod sursa (job #2761672) | Cod sursa (job #1916847)
#include <iostream>
#include <fstream>
using namespace std;
int i,n,v[100002],a,b,m,p,r,q;
int cautareBinara (int s, int d, int x, int &r, int &q)
{
int mij=(s+d)/2;if(v[mij]<=x&&mij>r)r=mij;if(v[mij]>=x&&mij<q)q=mij;
if(v[mij]==x)return mij;
else if(s<d)
{
if(v[mij]>x)return cautareBinara(s,mij-1,x,r,q);
else return cautareBinara(mij+1,d,x,r,q);
}
}
int main()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in>>n;
for(i=1;i<=n;i++)in>>v[i];
in>>m;
for(i=1;i<=m;i++)
{
in>>a>>b;
if(a==0)
{
p=cautareBinara(1,n,b,r,q);
while(v[p+1]==v[p]&&p+1<=n)p++;
out<<p<<"\n";
}
else if(a==1)
{
r=1;
cautareBinara(1,n,b,r,q);
while(v[r+1]<=b&&r+1<=n)r++;
out<<r<<"\n";
}
else
{
q=n;
cautareBinara(1,n,b,r,q);
while(v[q-1]>=b&&q>=1)q--;
out<<q<<"\n";
}
}
return 0;
}