Pagini recente » Cod sursa (job #1270100) | Cod sursa (job #1619555) | Cod sursa (job #2555032) | Cod sursa (job #2957828) | Cod sursa (job #3148803)
#include <fstream>
using namespace std;
ifstream cin ("cautbin.in");
ofstream cout ("cautbin.out");
int v[100001];
int maxst(int x,int n)
{
int st = 1,dr = n,ans;
while (st <= dr)
{
int med=(st+dr)/2;
if(v[med]<=x)
{
ans=med;
st=med+1;
}
else
dr=med-1;
}
return ans;
}
int mindr(int x,int n)
{
int st=1,ans=-1,dr=n;
while (st<=dr)
{
int med=(st+dr)/2;
if(v[med]>=x)
{
ans=med;
dr=med-1;
}
else
st=med+1;
}
return ans;
}
int main()
{
int n,m;
cin>>n;
for (int i = 1; i <= n; i++)
cin>>v[i];
cin>>m;
for (int i = 1 ; i <= m; i++)
{
int cer,x;
cin>>cer>>x;
if (cer==0){
int verif=maxst(x,n);
if (v[verif]==x)
cout<<verif<<'\n';
else
cout<<"-1\n";
}
if(cer==1)
cout<<maxst(x,n)<<'\n';
else if (cer==2)
cout<<mindr(x,n)<<'\n';
}
return 0;
}