Pagini recente » Cod sursa (job #69815) | Cod sursa (job #69719) | Cod sursa (job #1030954) | Cod sursa (job #2394628) | Cod sursa (job #3154201)
#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)/2;
if (tomb[kozep] == elem){
do{
kozep++;
}while (elem==tomb[kozep]);
return kozep;}
else if (tomb[kozep] < elem) {
bal = kozep + 1;
}
else { // tomb[kozep] > elem
jobb = kozep - 1;
}
}
return -1;
}
int binkeres1(int elem, int l, int tomb[])
{
int bal = 0, jobb = l-1, kozep;
while (bal <= jobb) {
kozep = (bal+jobb)/2;
if (tomb[kozep] == elem){
do{
kozep--;
}while (elem=!tomb[kozep]);
if (kozep <0)return kozep+1;
else return kozep;}
else if (tomb[kozep] < elem) {
bal = kozep + 1;
}
else { // tomb[kozep] > elem
jobb = kozep - 1;
}
}
return kozep;
}
int binkeres2(int elem, int l, int tomb[])
{
int bal = 0, jobb = l-1, kozep;
while (bal <= jobb) {
kozep = (bal+jobb)/2;
if (tomb[kozep] == elem){
do{
kozep++;
}while (elem=!tomb[kozep]);
if (kozep <l)
return kozep-1;
else return kozep; }
else if (tomb[kozep] < elem) {
bal = kozep + 1;
}
else { // tomb[kozep] > elem
jobb = kozep - 1;
}
}
return kozep;
}
int main () {
int i, n, m, tip, elem;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
int v[n];
for (i = 0; i <= n; i++)
f>>v[i];
f>>m;
while (m --){
f>>tip>>elem;
if (tip == 0)
g<<(binkeres0(elem,n,v))<<'/n';
if (tip == 1)
g<<(binkeres1(elem,n,v))<<'/n';
if (tip == 2)
g<<(binkeres2(elem,n,v))<<'/n';
}
f.close();
g.close();
return 0;
}