Pagini recente » Cod sursa (job #432314) | Monitorul de evaluare | Cod sursa (job #2052246) | Cod sursa (job #1268536) | Cod sursa (job #2841414)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, cer , x, v[100001];
int rez()
{
int pas=(1<<16), r=0;///pas=(1 "shift" 16) = 2 la puterea 16=64000<100000
while(pas)
{
if(pas+r<=n && v[pas+r]<=x)///daca pas+r si pozitia lui se incadreaza in zona verde
{
r=r+pas;///aici de se face pasul
}
pas>>=1;///se muta la dreapta in baza 2
}
if(cer==0)
{
if(v[r]==x)
return r;
else return -1;
}
if(cer==1)
return r;
if(cer==2)
return r+1;
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++) fin>>v[i];
int m;
fin>>m;
for(int i=1; i<=m; i++)
{
fin>>cer>>x;
if(cer==2)
x--;///aici il caut pe cel mai din stanga din zona verde
fout<<rez()<<'\n';
}
return 0;
}