Pagini recente » Cod sursa (job #996020) | Cod sursa (job #1655122) | Cod sursa (job #2393604) | Cod sursa (job #565414) | Cod sursa (job #1535026)
#include<fstream>
using namespace std;
#define vmax 100001
int v[vmax],n,a,b,nr;
int cautbin(int x)
{
int st = 1, dr = n,mij;
while (st <= dr)
{
mij = (st + dr)/2;
if (v[mij] <= x) st = mij + 1;
else dr = mij - 1;
}
mij = (st + dr) / 2;
if (v[mij] > x) mij--;
if (v[mij] == x) {
return mij + 1;
}
return -1;
}
int cautbin1(int x)
{
int st = 1, dr = n,mij;
while (st < dr)
{
mij = (st + dr) / 2;
if (v[mij] <= x) st = mij + 1;
else dr = mij;
}
mij = (st+dr)/2;
if (v[mij] > x) mij--;
return mij+1;
}
int cautbin2(int x)
{
int st = 1 , dr = n, mij;
while (st < dr)
{
mij = (st + dr) / 2;
if (v[mij] < x) st = mij + 1;
else dr = mij;
}
mij = (st+dr)/2;
if (v[mij] < x) mij++;
return mij+1;
}
int main ()
{
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
f >> n;
for (int i = 1; i <= n; ++i)
f >> v[i];
f >> nr;
for (int i = 1; i <= nr; ++i)
{
f >> a >> b;
if (a == 0) g << cautbin(b);
else
if (a == 1) g << cautbin1(b);
else
g << cautbin2(b);
}
g.close ();
return 0;
}