Pagini recente » Cod sursa (job #2151153) | Cod sursa (job #1684616) | IAP #3: Infoarena3 | Cod sursa (job #1061775) | Cod sursa (job #731852)
Cod sursa(job #731852)
#include<cstdio>
using namespace std;
long long int x,m,b,c,d,f,i,g,k,l,n,val,a[100000];
int lol(int x,int y,int z){
long int medie;
while (x<=y){
medie=(x+y)/2;
if(a[medie]<=z)
x=medie+1;
else
y=medie-1;}
medie=(x+y)/2;
if(a[medie]>z)
medie--;
if(a[medie]==z)
return medie;
return -1;}
int lol1(int x,int y,int z){
long int medie;
while (x<y){
medie=(x+y)/2;
if(a[medie]<=z)
x=medie+1;
else
y=medie-1;}
medie=(x+y)/2;
if(a[medie]>z)
medie--;
return medie;}
int lol2(int x,int y,int z){
long int medie;
while (x<y){
medie=(x+y)/2;
if(a[medie]>=z)
y=medie-1;
else
x=medie+1;}
medie=(x+y)/2;
if(a[medie]<z)
medie++;
return medie;}
int main(){
freopen ("cautbin.in","r",stdin);
freopen ("cautbin.out","w",stdout);
scanf("%lld ",&n);
for(i=1;i<=n;i++)
scanf("%lld ",&a[i]);
scanf("%lld ",&m);
while(m--){
scanf("%lld %lld",&i ,&val);
if(i==0)
printf("%lld\n",lol(1,n,val));
if(i==1)
printf("%lld\n",lol1(1,n,val));
if(i==2)
printf("%lld\n",lol2(1,n,val));
}
return 0;}