Pagini recente » Cod sursa (job #1161022) | Cod sursa (job #2341035) | Borderou de evaluare (job #1013485) | Cod sursa (job #2852321) | Cod sursa (job #2661110)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005];
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++)
{
in>>v[i];
}
int m;
in>>m;
while(m--)
{
int cod,x;
in>>cod>>x;
if(cod==0)
{
out<<cautare(1,n,x,0);
}
else if(cod==1)
out<<cautare(1,n,x,1);
else
out<<cautare(1,n,x,2);
out<<"\n";
}
return 0;
}