Pagini recente » Cod sursa (job #1450238) | Cod sursa (job #1917676) | Cod sursa (job #1030622) | Cod sursa (job #406893) | Cod sursa (job #1257411)
#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-1;
else st=mij+1;
}
return maxx;
}
int cautbin2(int st,int dr,int nr)
{
int mij,minn=100001;
while (st!=dr)
{
mij=(st+dr)/2;
if (x[mij]>=nr && mij<minn)
minn=mij;
if (nr<x[mij])
dr=mij-1;
else st=mij+1;
}
if (minn!=100001)
return minn;
}
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)<<" ";
//g<<a<<" "<<b<<" ";
}
return 0;
}