Pagini recente » Cod sursa (job #2052475) | Cod sursa (job #1803736) | Cod sursa (job #2758505) | Cod sursa (job #2654128) | Cod sursa (job #984374)
Cod sursa(job #984374)
#include <fstream>
#define NMax 100005
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N,M,X[NMax];
int Cbin1(int val)
{
int Sol=-1,st=1,dr=N,mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(X[mid]==val)
{Sol=mid;
st=mid+1;}
else
if(X[mid]<val)
st=mid+1;
else
dr=mid-1;
}
return Sol;
}
int Cbin2(int val)
{ int Sol,st=1,dr=N,mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(X[mid]<=val)
{Sol=mid;st=mid+1;}
else
dr=mid-1;
}
return Sol;
}
int Cbin3(int val)
{ int Sol,st=1,dr=N,mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(X[mid]>=val)
{Sol=mid;dr=mid-1;}
else
st=mid+1;
}
return Sol;
}
void ReadandSolve()
{
int op,val;
fin>>N;
for(int i=1;i<=N;i++)
fin>>X[i];
fin>>M;
while(M--)
{
fin>>op>>val;
if(op==0) fout<<Cbin1(val)<<"\n";
if(op==1) fout<<Cbin2(val)<<"\n";
if(op==2) fout<<Cbin3(val)<<"\n";
}
}
int main()
{
ReadandSolve();
return 0;
}