Pagini recente » Cod sursa (job #1973096) | Cod sursa (job #2252352) | Cod sursa (job #1887449) | Cod sursa (job #2065478) | Cod sursa (job #471777)
Cod sursa(job #471777)
#include<fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001];
int n;
int caut0(int x)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas/=2)
if(i+pas<=n&&v[i+pas]<=x)
i+=pas;
if(v[i]!=x)
return -i;
return i;
}
int caut1(int x)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas/=2)
if(i+pas<=n&&v[i+pas]<=x)
i+=pas;
return i;
}
int caut2(int x)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas/=2)
if(i+pas<=n&&v[i+pas]<x)
i+=pas;
return i+1;
}
int main()
{
int x,bx,m,i;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in>>m;
for(i=1;i<=m;i++)
{
in>>bx>>x;
if(bx==0)
out<<caut0(x)<<'\n';
if(bx==1)
out<<caut1(x)<<'\n';
if(bx==2)
out<<caut2(x)<<'\n';
}
return 0;
}