Pagini recente » Cod sursa (job #229683) | Cod sursa (job #2585794) | Cod sursa (job #2818284) | Cod sursa (job #1444936) | Cod sursa (job #2832520)
#include <fstream>
using namespace std;
#define NMAX 100005
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[NMAX], n, m, x;
int cerinta1()
{
int st = 1, dr = n, mij;
int poz = -1;
while(st <= dr){
mij = (st+dr)/2;
if(x == v[mij]){
poz = mij;
st = mij+1;
}
else
if(x < v[mij])
dr = mij-1;
else
if(x > v[mij])
st = mij+1;
}
return poz;
}
int cerinta2()
{
int st = 1, dr = n, mij;
int poz = -1;
while(st <= dr){
mij = (st+dr)/2;
if(v[mij] <= x){
poz = mij;
st = mij+1;
}
else
dr = mij-1;
}
return poz;
}
int cerinta3()
{
int st = 1, dr = n, mij;
int poz = -1;
while(st <= dr){
mij = (st+dr)/2;
if(v[mij] >= x){
poz = mij;
dr = mij-1;
}
else
st = mij+1;
}
return poz;
}
int main()
{
int task;
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> v[i];
fin >> m;
for(int i = 1; i <= m; i++){
fin >> task >> x;
switch(task)
{
case 0: fout << cerinta1() << '\n'; break;
case 1: fout << cerinta2() << '\n'; break;
case 2: fout << cerinta3() << '\n'; break;
}
}
}