Pagini recente » Borderou de evaluare (job #1182317) | Borderou de evaluare (job #2555150) | Borderou de evaluare (job #2725822) | Cod sursa (job #368487) | Cod sursa (job #2280543)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m, v[100001],q,nr,l,r,mid;
int main()
{
fin>>n;
for(int i=1;i<=n;i++)fin>>v[i];
fin>>m;
for(int i=1;i<=m;i++){
fin>>q>>nr;
l=1;r=n;
switch(q){
case 0:
while(l<r-1){
mid=(l+r)/2;
if(v[mid]<=nr)l=mid;
else if(v[mid]>nr)r=mid-1;
}
if(v[mid]==nr)fout<<mid<<endl;
else fout<<"-1"<<endl;
break;
case 1:
while(l<r-1){
mid=(l+r)/2;
if(v[mid]<=nr)l=mid;
else if(v[mid]>q)r=mid-1;
}
if(v[mid]<=nr)fout<<mid<<endl;
break;
case 2:
while(l<r-1){
mid=(l+r)/2;
if(v[mid]<nr)l=mid+1;
else if(v[mid]>=q)r=mid;
}
if(v[mid]>=nr)fout<<mid<<endl;
break;
}
}
return 0;
}