Pagini recente » Diferente pentru planificare/sponsori intre reviziile 5 si 6 | Istoria paginii utilizator/alexnic_ | Profil Tiberiu02 | Diferente pentru utilizator/ramona2007 intre reviziile 47 si 20 | Cod sursa (job #528031)
Cod sursa(job #528031)
#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;
for(i=1;i<=m;i++)
{
cin>>op>>x;
if(op==0)
{
smile=binar(1,n,x);
if(smile==-1) printf("%d\n",smile);
else
{
j=smile+1;
while(v[j]==x) j++;
printf("%d\n",j-1);
}
}
if(op==1)
{
smile=binar(1,n,x);
j=smile+1;
while(v[j]==x) j++;
printf("%d\n",j-1);
}
if(op==2)
{
smile=binar(1,n,x);
j=smile-1;
while(v[j]==x) j--;
printf("%d\n",j+1);
}
}
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
read();
solve();
return 0;
}