Pagini recente » Cod sursa (job #1305735) | Cod sursa (job #854409) | Cod sursa (job #1469709) | Cod sursa (job #329377) | Cod sursa (job #2857873)
#include <fstream>
using namespace std;
ifstream cin ("cautbin.in") ;
ofstream cout ("cautbin.out") ;
int n, q, v[100005] ;
int bsearch (int x, int st, int dr)
{
int mij ;
while (st <= dr)
{
mij = (st + dr) / 2 ;
if (x < v[mij])
dr = mij - 1 ;
else if (x > v[mij])
st = mij + 1 ;
else if (x == v[mij])
return mij ;
}
return -1 ;
}
int main()
{
int type, x ;
cin >> n ;
for (int i = 1 ; i <= n ; i ++)
cin >> v[i] ;
cin >> q ;
for (int i = 1 ; i <= q ; i ++)
{
cin >> type >> x ;
int pos = bsearch (x, 1, n) ;
if (type == 0)
{
if (pos == -1)
cout << -1 ;
else
{
while (v[pos] == v[pos + 1])
pos ++ ;
cout << pos << '\n' ;
}
}
else if (type == 1)
{
while (v[pos] == v[pos + 1])
pos ++ ;
cout << pos << '\n' ;
}
else
{
while (v[pos] == v[pos - 1])
pos -- ;
cout << pos << '\n' ;
}
}
return 0 ;
}