Pagini recente » Cod sursa (job #235410) | Cod sursa (job #1471202) | Diferente pentru implica-te/arhiva-educationala intre reviziile 127 si 126 | Cod sursa (job #2805858) | Cod sursa (job #2073811)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
const int L=16;
int n,v[100001],m,c,k;
int o2(int x)
{
int r, pas;
r=0;
pas=1<<L;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<=x)
{
r+=pas;
}
pas/=2;
}
if(v[r]!=x)
{
r=-1;
}
return r;
}
int i2(int x)
{
int r, pas;
r=0;
pas=1<<L;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<=x)
{
r+=pas;
}
pas/=2;
}
return r;
}
int e3(int x)
{
int r, pas;
r=0;
pas=1<<L;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<x)
{
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int main()
{
f>>n;
for(int i=1; i<=n; i++)
{
f>>v[i];
}
f>>m;
for(int i=1; i<=m; i++)
{
f>>c>>k;
if(c==0)
g<<o2(k);
if(c==1)
g<<i2(k);
if(c==2)
g<<e3(k);
g<<"\n";
}
return 0;
}