Pagini recente » Cod sursa (job #2196010) | Cod sursa (job #2194550) | Cod sursa (job #3196770) | Cod sursa (job #1239274) | Cod sursa (job #3174880)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main()
{
int n,m,v[100001],s,q,x;
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
fin>>m;
for(int i=1; i<=m; i++)
{
fin>>s>>q;
int left=1,right=n,ans=-1;
if(s==0)
{
int mid=(left+right)/2;
while(left<=right)
{
mid=(left+right)/2;
if(v[mid]<=q)
{
if(v[mid]==q&&ans<mid)
ans=mid;
left=mid+1;
}
else if(v[mid]>q)
right=mid-1;
}
fout<<ans<<endl;
}
if(s==1)
{
int mid=(left+right)/2;
while(left<=right)
{
mid=(left+right)/2;
if(v[mid]<=q)
{
if(ans<mid)
ans=mid;
left=mid+1;
}
else if(v[mid]>q)
right=mid-1;
}
fout<<ans<<endl;
}
if(s==2){
int ans=n;
int mid=(left+right)/2;
while(left<=right)
{
mid=(left+right)/2;
if(v[mid]>=q)
{
if(ans>mid)
ans=mid;
right=mid-1;
}
else if(v[mid]<q)
left=mid+1;
}
fout<<ans<<endl;
}
}
return 0;
}