Pagini recente » Cod sursa (job #2775878) | Cod sursa (job #336118) | Cod sursa (job #2766590) | Cod sursa (job #2282842) | Cod sursa (job #1046683)
#include <iostream>
#include <fstream>
using namespace std;
long n,a[100000],m;
int cautbin(int x){
long long p=1<<27,i;
//cout<<p;
for(i=0;p!=0;p=p/2)
if(i+p<n && a[i+p]<=x)
i=i+p;
//cout<<i;
return i;
}
int cautbin2(int x){
long long p=1<<27,i,minim=0;
//cout<<p;
for(i=0;p!=0;p=p/2)
{
if(i+p<n && a[i+p]>=x)
minim=i+p;
if(i+p<n && a[i+p]<x)
i=i+p;
}
//cout<<i;
if(a[0]>=x)
minim=0;
return minim;
}
int main()
{
long x,y,i;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(i=0;i<n;i++)
f>>a[i];
f>>m;
long poz=0;
for(i=0;i<m;i++)
{
f>>x>>y;
if(x==0){
poz=cautbin(y);
if(a[poz]==y)
g<<cautbin(y)+1<<'\n';
else g<<-1<<'\n';
}
if(x==1){
g<<cautbin(y)+1<<'\n';
}
if(x==2)
g<<cautbin2(y)+1<<'\n';
}
return 0;
}