Cod sursa(job #2395140)
Utilizator | Data | 2 aprilie 2019 11:44:44 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.63 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("cautbin.in");
ofstream so("cautbin.out");
int v[100005];
int main()
{
int n;
si>>n;
for(int i=1; i<=n; ++i) {
si>>v[i];
}
int q;
si>>q;
for(int i=1; i<=q; ++i) {
int a, b;
si>>a>>b;
if(a==0) {
int st=1;
int dr=n;
int mij;
int rez=-1;
while(st<=dr) {
mij=(st+dr)/2;
if(v[mij]==b) {
rez=mij;
st=mij+1;
}
else
if(v[mij]<b) {
st=mij+1;
}
else {
dr=mij-1;
}
}
so<<rez<<'\n';
}
if(a==1) {
int st=1;
int dr=n;
int mij;
int rez=-1;
while(st<=dr) {
mij=(st+dr)/2;
if(v[mij]<=b) {
rez=mij;
st=mij+1;
}
else {
dr=mij-1;
}
}
so<<rez<<'\n';
}
if(a==2) {
int st=1;
int dr=n, mij, rez=-1;
while(st<=dr) {
mij=(st+dr)/2;
if(v[mij]<b) {
st=mij+1;
}
else {
rez=mij;
dr=mij-1;
}
}
so<<rez<<'\n';
}
}
return 0;
}