Pagini recente » Cod sursa (job #2192449) | Cod sursa (job #1949195) | Cod sursa (job #2466428) | Cod sursa (job #1181961) | Cod sursa (job #2199459)
#include <iostream>
#include <fstream>
#define NUM 100005
int v[NUM];
int n, m, cod, x;
int st, dr, mij;
using namespace std;
int binar0()
{
st = 0;
dr = n - 1;
mij = st + (dr - st) / 2;
while(st <= dr && v[mij] != x)
{
mij = st + (dr - st) / 2;
if(v[mij] < x)
st = mij + 1;
else
dr = mij - 1;
}
if(v[mij] != x)
return -1;
while(v[mij + 1] == x && mij < n)
mij++;
return mij + 1;
}
int binar1()
{
st = 0;
dr = n - 1;
mij = st + (dr - st) / 2;
while(st <= dr && v[mij] != x)
{
mij = st + (dr - st) / 2;
if(v[mij] < x)
st = mij + 1;
else
dr = mij - 1;
}
if(v[mij] > x)
mij--;
return mij + 1;
}
int binar2()
{
st = 0;
dr = n - 1;
mij = st + (dr - st) / 2;
while(st <= dr && v[mij] != x)
{
mij = st + (dr - st) / 2;
if(v[mij] < x)
st = mij + 1;
else
dr = mij - 1;
}
if(v[mij] < x)
mij++;
return mij + 1;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f >> n;
for(int i = 0; i < n; ++i)
f >> v[i];
f >> m;
for(int i = 0; i < m; ++i)
{
f >> cod >> x;
switch(cod)
{
case 0:
g << binar0();
break;
case 1:
g << binar1();
break;
case 2:
g << binar2();
break;
}
g << "\n";
}
f.close();
g.close();
}