Pagini recente » Cod sursa (job #2920406) | Cod sursa (job #2413799) | Cod sursa (job #1149355) | Cod sursa (job #1744532) | Cod sursa (job #2485646)
#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);
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;
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;
if(v[m] < x)
st = m+1;
else
dr = m-1;
}
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;
}