Pagini recente » Cod sursa (job #266445) | Cod sursa (job #1479710) | Cod sursa (job #169170) | Cod sursa (job #343735) | Cod sursa (job #2544890)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int cautareBiDreapta(int v[101], int n, int x, int operatie) {
int st = 1, dr = n, poz, mij;
while(st < dr) {
mij = (st + dr + 1) / 2;
if(v[mij] > x)
dr = mij - 1;
else st = mij;
}
bool gasit = false;
if(v[st] == x)
gasit = true;
if(gasit)
return st;
else if(!gasit && operatie == 0)
return -1;
else if(!gasit && operatie == 1)
return st;
}
int cautareBiStanga(int v[101], int n, int x) {
int st = 1, dr = n, mij;
while(st < dr) {
mij = (dr + st) / 2;
if(v[mij] < x)
st = mij + 1;
else dr = mij;
}
return st;
}
int main() {
int N, v[100001];
f >> N;
for(int i = 1; i <= N; i++)
f >> v[i];
int M;
f >> M;
while(M--) {
int operatie, x;
f >> operatie >> x;
if(operatie == 0 || operatie == 1)
g << cautareBiDreapta(v, N, x, operatie) << "\n";
else if(operatie == 2)
g << cautareBiStanga(v, N, x) << "\n";
}
return 0;
}