Pagini recente » Cod sursa (job #1912954) | Cod sursa (job #2707351) | Cod sursa (job #778904) | Cod sursa (job #1052373) | Cod sursa (job #2374072)
#include <fstream>
#include <iostream>
#define NMAX 100005
using namespace std;
//ifstream fin("date.in");
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, v[NMAX], q;
int cautare_binara(int st, int dr, int x){
long long mij;
while(st <= dr){
mij = (st + dr) / 2;
if(x == v[mij]){
return mij;
}
else if(x < v[mij])
dr = mij - 1;
else
dr = mij + 1;
}
return -1;
}
void read(){
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> v[i];
fin >> q;
for(int i = 1; i <= q; ++i){
int c, x;
fin >> c >> x;
if(c == 0){
int mij = cautare_binara(1, n, x);
while(v[mij] == v[mij + 1])
mij++;
fout << mij << '\n';
}
if(c == 1){
int mij = cautare_binara(1, n, x);
while(v[mij] == v[mij + 1])
mij++;
fout << mij << '\n';
}
if(c == 2){
int mij = cautare_binara(1, n, x);
while(v[mij] == v[mij - 1])
mij--;
fout << mij << '\n';
}
}
}
int main(){
read();
fin.close();
fout.close();
return 0;
}