Pagini recente » Cod sursa (job #2990465) | Cod sursa (job #3158006) | Cod sursa (job #2828484) | Cod sursa (job #3181946) | Cod sursa (job #1315418)
#include <iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int a[100010],n,m;
int cautare(int x)
{
int poz,pas;
poz=0;
pas=(1<<17);
pas=(1<<17);
while(pas>>=1)
{
if(poz+pas <= n && a[poz+pas]<=x)
poz+=pas;
}
return poz;
}
int cautare1(int x)
{
int poz,pas;
poz=0;
pas=(1<<17);
while(pas>>=1)
{
if(poz+pas <=n && a[poz+pas]<x)
poz+=pas;
}
return poz;
}
void citire()
{
int i,op,x,poz;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
fin>>m;
for(i=1;i<=m;i++)
{
fin>>op>>x;
if(op<2)
{
poz=cautare(x);
if(op==0 && a[poz]!=x)
fout<<"-1\n";
else
fout<<poz<<"\n";
}
else
{
poz=cautare1(x);
fout<<poz+1<<"\n";
}
}
fin.close();
fout.close();
}
int main()
{
citire();
return 0;
}