Pagini recente » Cod sursa (job #1335324) | Cod sursa (job #1402712) | Cod sursa (job #343388) | Cod sursa (job #293268) | Cod sursa (job #1535033)
#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 = 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;
}