Pagini recente » Cod sursa (job #1395008) | Cod sursa (job #1850072) | Cod sursa (job #1666509) | Cod sursa (job #262633) | Cod sursa (job #2348444)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100005;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N, M, tip, val;
int v[NMAX];
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) << endl;
else if(tip == 1)
fout << search1(1, N) << endl;
else if(tip == 2)
fout << search2(1, N) << endl;
}
return 0;
}