Cod sursa(job #1999790)
Utilizator | Data | 12 iulie 2017 09:49:51 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.22 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main()
{
int n,v[100000],m,i,x,op,mid,li,ls;
fin >> n;
for(i=0; i<n; i++)fin>>v[i];
fin >> m;
for(i=0; i<m; i++)
{
fin >> op >> x;
if(op==0)
{
li = 0;
ls = n - 1;
while(li<ls)
{
mid = (li+ls+1)/2;
if(v[mid] <= x)li = mid;
else ls = mid - 1;
}
if(v[li] == x)fout << li + 1 <<"\n";
else fout << "-1\n";
}
else if(op==1)
{
li = 0;
ls = n-1;
while(li<ls)
{
mid = (li+ls+1)/2;
if(v[mid] <= x)li = mid;
else ls = mid - 1;
}
fout << li + 1 <<"\n";
}
else
{
li = 0;
ls = n-1;
while(li<ls)
{
mid = (li+ls)/2;
if(v[mid] < x)li = mid + 1;
else ls = mid;
}
fout << li + 1 << "\n";
}
}
return 0;
}