Pagini recente » Cod sursa (job #183068) | Cod sursa (job #1528807) | Cod sursa (job #1507657) | Cod sursa (job #1913092) | Cod sursa (job #2279448)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int N = 100001;
const int L = 16;
int v[N], n;
int caz0(int x)
{
int r=0,pas=1<<L;
while(pas!=0)
{
if(r+pas<=n && v[pas+r]<=x){
r+=pas;
}
pas/=2;
}
if(v[r]!=x){
r=-1;
}
return r;
}
int caz1(int x)
{
int r=0,pas=1<<L;
while(pas!=0)
{
if(r+pas<=n && v[pas+r]<=x){
r+=pas;
}
pas/=2;
}
return r;
}
int caz2(int x)
{
int r=0,pas=1<<L;
while(pas!=0)
{
if(r+pas<=n && v[pas+r]<x){
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int main()
{
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
int m,tip,val;
in>>m;
for(int i=1;i<=m;i++){
in>>tip>>val;
if(tip==0)
out<<caz0(val)<<'\n';
if(tip==1)
out<<caz1(val)<<'\n';
if(tip==2)
out<<caz2(val)<<'\n';
}
return 0;
}