Pagini recente » Cod sursa (job #3163204) | Cod sursa (job #3289208) | Cod sursa (job #258796) | Cod sursa (job #1596326) | Cod sursa (job #3154481)
#include <iostream>
#include <fstream>
using namespace std;
int binkeres0(int elem, int l, int tomb[])
{
int bal = 0, jobb = l-1;
while (bal < jobb) {
int kozep = (bal+jobb+1)/2;
if (tomb[kozep] <= elem) {
bal = kozep ;
}
else { // tomb[kozep] > elem
jobb = kozep - 1;
}
}
if (elem==tomb[bal])
return bal;
return -2;
}
int binkeres1(int elem, int l, int tomb[])
{
int bal = 0, jobb = l-1;
while (bal < jobb) {
int kozep = (bal+jobb+1)/2;
if (tomb[kozep] <= elem) {
bal = kozep ;
}
else { // tomb[kozep] > elem
jobb = kozep - 1;
}
}
return bal;
}
int binkeres2(int elem, int l, int tomb[])
{
int bal = 0, jobb = l-1;
while (bal < jobb) {
int kozep = (bal+jobb)/2;
if (tomb[kozep] < elem) {
bal = kozep+1;
}
else { // tomb[kozep] > elem
jobb = kozep;
}
}
return bal;
}
int main () {
int i, n, m, tip, elem;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
int v[n+1];
for (i = 0; i < n; i++)
f>>v[i];
f>>m;
while (m --){
f>>tip>>elem;
if (tip == 0)
g<<(binkeres0(elem,n,v))+1<<'\n';
if (tip == 1)
g<<(binkeres1(elem,n,v))+1<<'\n';
if (tip == 2)
g<<(binkeres2(elem,n,v))+1<<'\n';
}
f.close();
g.close();
return 0;
}