Pagini recente » Cod sursa (job #3120659) | Cod sursa (job #1891693) | Cod sursa (job #668527) | Cod sursa (job #332135) | Cod sursa (job #2895068)
#include<bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
vector<int> v;
int binarySearch0(int left, int right, int target){
if(left>right)
return -1;
else{
int mid=(left+right)/2;
if(v[mid] == target && v[mid+1] != target){
return mid;
}
else if(v[mid]>target)
return binarySearch0(left,mid-1,target);
else
return binarySearch0(mid+1,right,target);
}
}
int binarySearch1(int left, int right, int target){
if(left>right)
return -1;
else{
int mid = (left+right)/2;
if(v[mid]<= target && v[mid+1]>target)
return mid;
else if(v[mid] > target)
return binarySearch1(left, mid-1, target);
else{
return binarySearch1(mid+1,right,target);
}
}
}
int binarySearch2(int left, int right, int target){
if(left>right)
return -1;
else{
int mid = (left+right)/2;
if(v[mid]>=target && v[mid-1]<target)
return mid;
else if (v[mid]<target){
return binarySearch2(mid+1,right,target);
}
else{
return binarySearch2(left,mid-1,target);
}
}
}
int main(){
int n,m,tip;
f>>n;
int i,a;
for(i=0;i<n;++i){
f>>a;
v.push_back(a);
}
f>>m;
for(i=0;i<m;++i){
f>>tip>>a;
if(tip==0){
g<<binarySearch0(0,n-1,a)+1<<'\n';
}
else if(tip==1){
g<<binarySearch1(0,n-1,a)+1<<'\n';
}
else if(tip==2){
g<<binarySearch2(0,n-1,a)+1<<'\n';
}
}
return 0;
}