Pagini recente » Cod sursa (job #755608) | Cod sursa (job #2040163) | Cod sursa (job #660601) | Cod sursa (job #2106981) | Cod sursa (job #2358010)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautarebinara.in");
ofstream fout("cautarebinara.out");
int n, v[100], val, x, y, tip, M;
int read()
{
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
}
int search0(int x, int y)
{
int m;
while (x <= y) {
m = (x + y) / 2;
if (v[m] <= val)
x = m + 1;
else
y = m - 1;
}
m = (x + y) / 2;
if(v[m] > val)
m--;
if(v[m] == val)
return m;
return -1;
}
int search1(int x, int y)
{
int m;
while(x < y){
m = (x + y) / 2;
if(v[m] <= val)
x = m + 1;
else
y = m;
}
m = (x + y) / 2;
if(v[m] > val)
--m;
return m;
}
int search2(int x, int y){
int m;
while(x < y){
m = (x + y) / 2;
if(v[m] < val)
x = m + 1;
else
y = m;
}
m = (x + y) / 2;
if(v[m] < val)
m++;
return m;
}
int main()
{
read();
fin>>M;
for(int i=0; i<M; i++){
fin>>tip>>val;
if(tip == 0)
fout<<search0(1, n);
else if(tip == 1)
fout<<"\n"<<search1(1, n);
else if(tip == 2)
fout<<"\n"<<search2(1, n);
}
}