Cod sursa(job #3163946)
Utilizator | Data | 1 noiembrie 2023 18:55:55 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.36 kb |
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int tomb[100000],N,M,c,x,i,bal,jobb;
f>>N;
for (i = 0; i < N; ++i)
f>>tomb[i];
f>>M;
for (i=0; i<M; i++){
f>>c>>x;
if(c==0){
bal = 0, jobb = N-1;
while (bal < jobb) {
int kozep = (bal + jobb+1) / 2;
if (tomb[kozep] >x) {
jobb= kozep-1;
}
else {
bal= kozep;
}
}
if(x!=tomb[jobb]) jobb=-1;
}
else if(c==1){
bal = 0, jobb = N-1;
while (bal < jobb) {
int kozep = (bal + jobb+1) / 2;
if (tomb[kozep] >x) {
jobb= kozep-1;
}
else {
bal= kozep;
}
}
}
else if(c==2){
bal = 0, jobb = N-1;
while (bal < jobb) {
int kozep = (bal + jobb) / 2;
if (tomb[kozep]<x) {
bal= kozep+1;
}
else {
jobb=kozep;
}
}
}
g<<jobb+1<<endl;
}
return 0;
}