Pagini recente » Cod sursa (job #936414) | Cod sursa (job #1188218) | Cod sursa (job #2188967) | Cod sursa (job #981303) | Cod sursa (job #1999556)
#include<fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int N,M;
int a[100001];
void Citire (){
f>>N;
for (int i=1; i<=N; i++)
f>>a[i];
f>>M;
}
int Cautare1 (int valoare){
int dreapta=N, stanga=1, mijloc,pozitie=-1;
while (stanga<=dreapta){
mijloc=(stanga + dreapta)/2;
if (valoare==a[mijloc]) {
pozitie=mijloc;
stanga=mijloc+1;
}
else if (valoare<a[mijloc]) dreapta=mijloc-1;
else stanga=mijloc+1;
}
return pozitie;
}
int Cautare2 (int valoare) {
int stanga=1, dreapta=N, mijloc,pozitie=1;
while (stanga<=dreapta){
mijloc=(stanga+dreapta)/2;
if (valoare<a[mijloc]) dreapta=mijloc-1;
else {
pozitie=mijloc;
stanga=mijloc+1;
}
}
return pozitie;
}
int Cautare3 (int valoare) {
int stanga=1, dreapta=N, mijloc, pozitie;
while (stanga<=dreapta){
mijloc=(stanga+dreapta)/2;
if (valoare<=a[mijloc]) {
pozitie=mijloc;
dreapta=mijloc-1;
}
else stanga=mijloc+1;
}
return pozitie;
}
int main (){
Citire();
for (int i=1; i<=M; i++)
{
int tip, x;
f>>tip>>x;
if (tip==0) g<<Cautare1(x)<<'\n';
else if (tip==1) g<<Cautare2(x)<<'\n';
else g<<Cautare3(x)<<'\n';
}
return 0;
}