Pagini recente » Cod sursa (job #2900413) | Cod sursa (job #1278863) | Cod sursa (job #2847083) | Cod sursa (job #599529) | Cod sursa (job #1846924)
#include <fstream>
using namespace std;
int a[100003];
int CB0(int st, int dr, int x)
{
int mij,p=-1;
while(st<=dr)
{
mij = (st+dr) / 2;
if(x==a[mij])
{
p = mij;
st = mij+1;
}
else if(x<a[mij]) dr = mij-1;
else st = mij+1;
}
return p;
}
int CB1(int st, int dr, int x)
{
int mij,p=-1;
while(st<=dr)
{
mij = (st+dr) / 2;
if(a[mij]<=x)
{
p = mij;
st = mij+1;
}
else dr = mij-1;
}
return p;
}
int CB2(int st, int dr, int x)
{
int mij,p=-1;
while(st<=dr)
{
mij = (st+dr) / 2;
if(a[mij]>=x)
{
p = mij;
dr = mij-1;
}
else st = mij+1;
}
return p;
}
int main()
{
int n,i,q,x,op;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;++i) fin>>a[i];
fin>>q;
for(i=1;i<=q;++i)
{
fin>>op>>x;
if(op==0) fout<<CB0(1,n,x)<<"\n";
if(op==1) fout<<CB1(1,n,x)<<"\n";
if(op==2) fout<<CB2(1,n,x)<<"\n";
}
fin.close();
fout.close();
return 0;
}