Pagini recente » Cod sursa (job #896317) | Cod sursa (job #984370) | Cod sursa (job #3246648) | Cod sursa (job #1740069) | Cod sursa (job #1506528)
#include<iostream>
#include<fstream>
#define MAXN 100001
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m;
int v[MAXN];
int caut0(int value)
{
int step;
int i = 0;
for(step = 1; step < n; step <<= 1);
for(i=0; step != 0; step >>= 1)
{
if(i + step < n && v[i + step] <= value)
i += step;
}
g << i << '\n';
return 0;
}
int caut1(int value)
{
int step;
int i = 0;
for(step = 1; step < n; step <<= 1);
for(i=0; step != 0; step >>= 1)
{
if(i + step < n && v[i + step] <= value)
i += step;
}
g << i << '\n';
return 0;
}
int caut2(int value)
{
int step;
int i = n;
for(step = 1; step < n; step <<= 1);
for(i=n; step != 0; step >>= 1)
{
if(i - step > 0 && v[i - step] >= value)
i -= step;
}
g << i << '\n';
return 0;
}
int main()
{
f >> n;
for(int i=1; i<=n; i++)
f >> v[i];
f >> m;
int x, y;
for(int i=1; i<=m; i++)
{
f >> x;
f >> y;
switch(x)
{
case 0:
caut0(y);
break;
case 1:
caut1(y);
break;
case 2:
caut2(y);
break;
}
}
return 0;
}