Pagini recente » Cod sursa (job #1905663) | Cod sursa (job #2869524)
#include <iostream>
#include <fstream>
#include <limits.h>
#define NMAX 100001
///CAUTARE-BINARA.
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[NMAX],i,opt,x,k;
void Rezolvare1()
{
int mij,gasit,lo,hi;
lo=0;
hi=n+1;
while(hi-lo>1)
{
mij=(hi+lo)/2;
if(v[mij]>x)
hi=mij;
else
lo=mij;
}
if(lo<n+1&&v[lo]==x)
g<<lo<<'\n';
else
g<<-1;
}
void Rezolvare2()
{
int mij,lo,hi;
lo=0;
hi=n+1;
while(hi-lo>1)
{
mij=(hi+lo)/2;
if(v[mij]>x)
hi=mij;
else
lo=mij;
}
g<<lo<<'\n';
}
void Rezolvare3()
{
int mij,lo,hi;
lo=0;
hi=n+1;
while(hi-lo>1)
{
mij=(hi+lo)/2;
if(v[mij]<x)
lo=mij;
else
hi=mij;
}
g<<hi<<'\n';
}
void Citire()
{
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
f>>k;
while(k!=0)
{
f>>opt;
f>>x;
if(opt==0)
Rezolvare1();
if(opt==1)
Rezolvare2();
if(opt==2)
Rezolvare3();
k--;
}
}
int main()
{
Citire();
return 0;
}