Pagini recente » Cod sursa (job #2656897) | Cod sursa (job #2981923) | Cod sursa (job #2623603) | Cod sursa (job #1413578) | Cod sursa (job #1535023)
#include<fstream>
using namespace std;
#define vmax 10001
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;
}