Pagini recente » Cod sursa (job #1388882) | Cod sursa (job #2671270) | Cod sursa (job #1716626) | Cod sursa (job #856525) | Cod sursa (job #2493198)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, cerinta, deCautat;
int v[100005];
int cautBin(int st, int dr, int x) {
int mid = (st+dr)/2+1;
if(st > dr) {
if(cerinta == 0)
return -1;
return mid;
}
if(x > mid)
return cautBin(mid, dr, x);
if(x < mid)
return cautBin(st, mid, x);
return mid;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> v[i];
fin >> m;
for(int i = 0; i < m; ++i) {
fin >> cerinta >> deCautat;
int poz = cautBin(1, n, deCautat);
if(cerinta == 0) {
if(poz == -1) {
fout << poz << '\n';
continue;
}
while(v[poz+1] == deCautat)
++poz;
fout << poz << '\n';
continue;
}
if(cerinta == 2) {
while(v[poz-1] == deCautat) {
--poz;
}
fout << poz << '\n';
}
if(cerinta == 1) {
while(v[poz+1] == deCautat) {
++poz;
}
fout << poz << '\n';
}
}
return 0;
}