Pagini recente » Cod sursa (job #1426224) | Cod sursa (job #753222) | Cod sursa (job #2300159) | Cod sursa (job #3130998) | Cod sursa (job #1877304)
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int m,n,a[100001],x,u;
int findBinary(int i, int j, int a[],int x){
int m = i + (j-i)/2;
if(x < a[1] or x > a[n])return -1;
if(a[m] == x)return m;
if(x > a[m])return findBinary(m+1,n,a,x);
if(x < a[m])return findBinary(1,m,a,x);
}
int main(){
fin>>n;
for(int i = 1;i <= n; ++i){
fin>>a[i];
}
fin>>m;
for(int i=0;i<m;++i){
fin>>u>>x;
int k = findBinary(1,n,a,x);
while(a[k] == x)++k;
--k;
switch(u){
case 0:{
fout<<k<<"\n";
break;
}
case 1:{
if(k == -1)fout<<n<<"\n";
else fout<<k<<"\n";
break;
}
case 2:{
if(k == -1)fout<<"1\n";
else{
while(a[k] == x) --k;
++k;
fout<<k<<"\n";
}
break;
}
}
}
return 0;
}