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