Pagini recente » Istoria paginii runda/oji_11_2023 | Cod sursa (job #2806254) | Cod sursa (job #847941)
Cod sursa(job #847941)
#include <fstream>
#define MAXN 100001
using namespace std;
ifstream is("cautbin.in");
ofstream os("cautbin.out");
int M,N;
int v[MAXN];
int main()
{
int st,dr,mid,n,x,poz=-1,c,m;
is>>n;
for(int i=1;i<=n;i++)
is>>v[i];
is>>m;
for(int i=1;i<=m;i++)
{
is>>c>>x;
st = 1;
dr=n;
poz=-1;
while(st <= dr && poz==-1)
{
mid = (st+dr)/2;
if( v[mid] < x )
st = mid+1;
else if( v[mid] == x)
poz = mid;
else
dr = mid-1;
}
if(c==0)
{
if(poz==-1) os<<-1;
else { while(v[poz]==v[poz+1]) poz++;
os<<poz;}
}
if(c==1)
{
if(poz==-1) poz=dr;;
while(v[poz]==v[poz+1]) poz++;
os<<poz;
}
if(c==2)
{
if(poz==-1) poz=st;
while(v[poz]==v[poz-1]) poz--;
os<<poz;
}
os<<endl;
}
is.close();
os.close();
return 0;
}