Pagini recente » Cod sursa (job #1732667) | Cod sursa (job #1233438) | Cod sursa (job #177159) | Cod sursa (job #1350480) | Cod sursa (job #2485648)
#include <iostream>
#include <fstream>
using namespace std;
int v[100001], n;
int cautare_binara(int t, int x) {
int st=0, dr=n-1, m, r=-1;
if(t == 0) {
while(st <= dr) {
m = (st + dr)/2;
if(v[m] == x)
r = max(r, m+1);
if(v[m] <= x)
st = m+1;
else
dr = m-1;
}
return r;
}
if(t == 1) {
while(st <= dr) {
m = (st + dr)/2;
if(v[m] <= x)
r = m+1;
if(v[m] <= x)
st = m+1;
else
dr = m-1;
}
return r;
}
if(t == 2) {
while(st <= dr) {
m = (st + dr)/2;
if(v[m] >= x)
r = m+1;
if(v[m] >= x)
dr = m-1;
else
st = m+1;
}
return r;
}
return r;
}
int main() {
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin >> n;
for(int i = 0; i < n; i++)
fin >> v[i];
int m, t, x;
fin >> m;
for(int i = 0; i < m; i++)
{
fin >> t >> x;
fout << cautare_binara(t, x) << '\n';
}
cout << cautare_binara(2, 3);
fin.close();
fout.close();
return 0;
}