Pagini recente » Cod sursa (job #3139765) | Cod sursa (job #3162438) | Cod sursa (job #230422) | Cod sursa (job #1153988) | Cod sursa (job #2266365)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("cautbin.in") ;
ofstream g ("cautbin.out") ;
int n , a[100010] , x , st , dr , mij , m , tip , poz = -1;
void solve1()
{
st = 1 ;
dr = n ;
while (st < dr)
{
mij = st + (dr -st)/ 2;
if (a[mij] <= x)
{
st = mij + 1;
}
else {dr = mij - 1;}
}
if (a[st] > x)
st -- ;
if (a[st] == x)
g << st << '\n' ;
else g << -1 << '\n';
}
void solve2()
{
st = 1 ;
dr = n;
while (st < dr)
{
mij = st + (dr -st)/ 2;
if (a[mij] <= x)
{
st = mij + 1;
}
else
{
dr = mij - 1 ;
}
}
if (a[st] > x)
st -- ;
g << st << '\n' ;
}
void solve3()
{
st = 1;
dr = n ;
while (st < dr)
{
mij = st + (dr -st)/ 2;
if (a[mij] >= x)
{
dr = mij;
}
else
{
st = mij + 1 ;
}
}
while (a[st] < x)
st ++ ;
g << st << '\n' ;
}
int main()
{
f >> n;
for (int i = 1 ; i <= n ; ++i)
f >> a[i] ;
f >> m ;
for (int k = 1 ; k <= m ; ++k)
{
f >> tip >> x ;
if(tip == 0)
solve1() ;
if(tip == 1)
solve2() ;
if(tip == 2)
solve3() ;
}
return 0 ;
}