Pagini recente » Monitorul de evaluare | Profil nokeno99 | Istoria paginii utilizator/alinciocoveanu | Profil Blackjackmds | Cod sursa (job #528054)
Cod sursa(job #528054)
#include <iostream>
#include<stdio.h>
using namespace std;
const int lg=100001;
int v[lg],n,m;
void read()
{
int i;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>m;
}
int binar(int low,int high,int x)
{
long int mid=(low+high)/2;
if(low>high) return -1;
else
if(v[mid]==x) return mid;
else if(x>v[mid]) return binar(mid+1,high,x);
else return binar(low,mid-1,x);
}
void solve()
{
int i,j,op,x,smile,oky;
for(i=1;i<=m;i++)
{
cin>>op>>x;
smile=binar(1,n,x);
if(op==0)
{
if(smile==-1) printf("%d\n",smile);
else
{
j=smile;oky=j;
while(v[j]==x) j++;
printf("%d\n",j-1);
// else printf("%d\n",oky+1)
}
}
if(op==1)
{
//smile=binar(1,n,x);j=0;
j=smile;oky=j;
while(v[j]==x) j++;
if(oky!=j-1)
printf("%d\n",j-1);
else printf("%d\n",oky+1);
}
if(op==2)
{
// smile=binar(1,n,x);j=0;
j=smile;oky=j;
while(v[j]==x) j--;
if(oky!=j+1)
printf("%d\n",j+1);
else printf("%d\n",oky-1);
}
}
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
read();
solve();
return 0;
}