Pagini recente » Cod sursa (job #2341074) | Istoria paginii racovita_mini_vacanta_11_12 | Rezultate Info Oltenia 2018 Proba Individuala | Borderou de evaluare (job #2034013) | Cod sursa (job #2661101)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
vector<int> v;
int cautare(int st,int dr,int val,int ok)
{
int ans=-1;
while(st<dr)
{
int mid=(st+dr)/2;
if(v[mid]==val)
{
ans=mid;
if(ok!=2) st=mid+1;
else dr=mid-1;
}
else if(v[mid]<val) st=mid+1;
else dr=mid-1;
}
if(ok==0) return ans;
else if(ok==1)
return dr;
return st;
}
int main()
{
int n;
in>>n;
for(int i=1;i<=n;i++)
{
int x;
in>>x;
v.push_back(x);
}
int m;
in>>m;
while(m--)
{
int cod,x;
in>>cod>>x;
if(cod==0)
{
out<<cautare(1,n,x,0)+1;
}
else if(cod==1)
out<<cautare(1,n,x,1)+1;
else
out<<cautare(1,n,x,2)+1;
out<<"\n";
}
return 0;
}