Pagini recente » Cod sursa (job #460313) | Cod sursa (job #2745262) | Cod sursa (job #2358339) | Cod sursa (job #2691627) | Cod sursa (job #1128953)
#include <fstream>
using namespace std;
ifstream is ("cautbin.in");
ofstream os ("cautbin.out");
int n, v[100003], x, y, q, u, k;
int C (int i, int n);
int C2 (int i, int n);
int C3 (int i, int n);
int main()
{
is >> n;
for(int i = 1; i <= n; ++i)
is >> v[i];
is >> k;
for(int i = 1; i <= k; ++i)
{
is >> x >> y;
if(x == 0)
{
u = C(1, n);
while(v[u] == y)
++u;
os << u-1 <<'\n';
}
if(x == 1)
{
u = C2(1, n);
while(v[u] <= y)
++u;
os << u-1 <<'\n';
}
if(x == 2)
{
u = C3(1, n);
while(v[u] >= y)
--u;
os << u+1 <<'\n';
}
}
is.close();
os.close();
return 0;
}
int C (int i, int n)
{
if (i > n)
return -1;
q = (i + n)/2;
if(y == v[q])
return q;
if(y > v[q])
return C(q+1, n);
return C(i, q-1);
}
int C2 (int i, int n)
{
if (i > n)
return -1;
q = (i + n)/2;
if(y >= v[q])
return q;
if(y >= v[q])
return C(q+1, n);
return C(i, q-1);
}
int C3 (int i, int n)
{
if (i > n)
return -1;
q = (i + n)/2;
if(y <= v[q])
return q;
if(y <= v[q])
return C(q+1, n);
return C(i, q-1);
}