Pagini recente » Cod sursa (job #3198040) | Cod sursa (job #605869) | Cod sursa (job #1457) | Cod sursa (job #1647825) | Cod sursa (job #1535043)
#include<fstream>
using namespace std;
#define vmax 100001
int v[vmax],n,a,b,nr;
int cautbin(int x)
{
int st = 0, dr = n-1,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 = 0, dr = n-1,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 = 0 , dr = n-1, 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 = 0; i <= n-1; ++i)
f >> v[i];
f >> nr;
for (int i = 0; i < nr; ++i)
{
f >> a >> b;
if (a == 0) g << cautbin(b) << '\n';
else
if (a == 1) g << cautbin1(b) << '\n';
else
g << cautbin2(b) << '\n';
}
g.close ();
return 0;
}