Pagini recente » Cod sursa (job #2573500) | Cod sursa (job #1272253) | Cod sursa (job #2626718) | Cod sursa (job #1042440) | Cod sursa (job #2357993)
#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<<search1(1, n);
else if(tip == 2)
fout<<search2(1, n);
}
}