Pagini recente » Cod sursa (job #1593596) | Cod sursa (job #1844122) | Cod sursa (job #371114) | Cod sursa (job #1715030) | Cod sursa (job #1257433)
#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;
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;
}