Pagini recente » Cod sursa (job #524969) | Cod sursa (job #1601755) | Cod sursa (job #952824) | Cod sursa (job #583053) | Cod sursa (job #2801186)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n , i , m , x , a[100005], nr , y , z;
int ceva0(int a[], int x)
{
int s , d , m , poz ;
s=1;
d=n;
while(s<=d){
m=(s+d)/2;
if(a[m]<=x){
if(a[m]==x)poz=m,s=m+1;
else s=m+1;
}
else d=m-1;
}
return poz;
}
int ceva1(int a[], int x)
{
int s , d , m , poz ;
s=1;
d=n;
while(s<=d){
m=(s+d)/2;
if(a[m]<=x){
if(a[m]==x)poz=m,s=m+1;
else s=m+1;
}
else d=m-1;
}
return poz;
}
int ceva2(int a[], int x)
{
int s , d , m , poz ;
s=1;
d=n;
while(s<=d){
m=(d+s)/2;
if(a[m]>=x){
if(a[m]==x)d=m-1,poz=m;
else d=m-1;
}
else s=m+1;
}
return poz;
}
int main()
{
f >> n ;
for(i=1;i<=n;i++)f >> a[i];
f >> m ;
for(i=1;i<=m;i++){
f >> y >> x ;
if(y==0)z=ceva0(a,x);
else if(y==1)z=ceva1(a,x);
else if(y==2)z=ceva2(a,x);
g << z << '\n';
}
}