Pagini recente » Cod sursa (job #1930550) | Cod sursa (job #2866329) | Cod sursa (job #2362205) | Cod sursa (job #2190482) | Cod sursa (job #2251825)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int cautbin0(int f, int l, int val, int v[]){
int poz = -1, m;
while (f <= l){
m = f + (l - f) / 2;
if (val < v[m])
l = m - 1;
else
f = m + 1;
if (val == v[m])
poz = m;
}
return poz;
}
int cautbin1(int f, int l, int val, int v[]){
int poz = 0, m;
while (f <= l){
m = f + (l - f) / 2;
if (val < v[m])
l = m - 1;
else
f = m + 1;
if (val == v[m])
poz = m;
}
if (poz == 0)
return l;
else
return poz;
}
int cautbin2(int f, int l, int val, int v[]){
int poz = 0, m;
while (f <= l){
m = f + (l - f) / 2;
if (val <= v[m])
l = m - 1;
else
f = m + 1;
if (val == v[m])
poz = m;
}
if (poz == 0)
return f;
else
return poz;
}
int main()
{
int n, m, x, c, v[100001], i;
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for (i = 1; i <= m; i++){
fin >> c >> x;
if (c == 0)
fout << cautbin0(1, n, x, v) << '\n';
if (c == 1)
fout << cautbin1(1, n, x, v) << '\n';
if (c == 2)
fout << cautbin2(1, n, x, v) << '\n';
}
return 0;
}