Pagini recente » Cod sursa (job #1734573) | Cod sursa (job #903466) | Cod sursa (job #2487986) | Cod sursa (job #2285208) | Cod sursa (job #1257428)
#include <iostream>
#include <fstream>
using namespace std;
int x[100001];
int cautbin0(int st,int dr,int nr)
{
int mij;
while (st<=dr) {
mij=(st + dr)/2;
if (x[mij]<=nr)
st=mij+1;
else
dr=mij-1;
}
mij=(st+dr)/2;
if (x[mij]>nr) --mij;
if (x[mij]==nr)
return mij;
return -1;
}
int cautbin1(int st,int dr,int nr)
{
int mij,maxx=0;
while (st<dr)
{
mij=(st+dr)/2;
if (x[mij]<=nr)
st=mij+1;
else dr=mij;
}
mij=(st+dr)/2;
if (x[mij]>nr)
--mij;
return mij;
}
int cautbin2(int st,int dr,int nr)
{
int mij;
while (st<dr)
{
mij=(st+dr)/2;
if (x[mij]<nr)
st=mij+1;
else dr=mij;
}
mij=(st+dr)/2;
if (x[mij]<nr)
++mij;
return mij;
}
int main()
{
int n,i,nr,a,b;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for (i=1;i<=n;++i)
f>>x[i];
f>>nr;
for(i=1;i<=nr;++i){
f>>a>>b;
if (a==0)
g<<cautbin0(1,n,b)<<" ";
if (a==1)
g<<cautbin1(1,n,b)<<" ";
if (a==2)
g<<cautbin2(1,n,b)<<" ";
}
return 0;
}