Pagini recente » Cod sursa (job #2064748) | Cod sursa (job #3176340) | Cod sursa (job #1687129) | Istoria paginii runda/simulare_oji_2023_clasa_10_14_martie/clasament | Cod sursa (job #2074915)
#include <cstdio>
using namespace std;
int n, a[100001], m;
int st, dr, mij;
int tip, x;
void cit()
{
scanf("%d\n", &n);
for(int i=1; i<=n; i++)
scanf("%d ", &a[i]);
scanf("%d\n", &m);
}
void tip0(int x)
{
int poz = -1;
st = 1; dr = n;
for(st; st<=dr; )
{
mij = (st+dr)/2;
if(x < a[mij])
{dr = mij-1;}
if(x == a[mij])
{poz = mij; st = mij+1;}
if(x > a[mij])
{st = mij+1;}
}
printf("%d\n", poz);
}
void tip1(int x)
{
int poz = -1;
st = 1; dr = n;
for(st; st<=dr; )
{
mij = (st+dr)/2;
if(a[mij] <= x)
{poz = mij; st = mij+1; }
else
{dr = mij-1;}
}
printf("%d\n", poz);
}
void tip2(int x)
{
int poz = -1;
st = 1; dr = n;
for(st; st<=dr; )
{
mij = (st+dr)/2;
if(a[mij] >= x)
{poz = mij; dr = mij-1;}
else st = mij+1;
}
printf("%d\n", poz);
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
cit();
for(int i=1; i<=m; i++)
{
scanf("%d %d\n", &tip, &x);
if(tip == 0)
tip0(x);
else if(tip == 1)
tip1(x);
if(tip == 2)
tip2(x);
}
return 0;
}