Pagini recente » Cod sursa (job #2097391) | Cod sursa (job #1075533) | Cod sursa (job #354900) | Cod sursa (job #1219514) | Cod sursa (job #1257424)
#include <iostream>
#include <fstream>
using namespace std;
int x[100001];
int cautbin0(int st,int dr,int nr)
{
int mij,maxx=0;
while (st<dr)
{
mij=(st+dr)/2;
if (x[mij]==nr && mij>maxx)
maxx=mij;
if (nr<x[mij])
dr=mij-1;
else st=mij+1;
}
if (maxx!=0)
return maxx;
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 && mij>maxx)
maxx=mij;
if (nr<x[mij])
dr=mij;
else st=mij+1;
}
return maxx;
}
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;
}