Pagini recente » Cod sursa (job #2839678) | Cod sursa (job #2281106) | Cod sursa (job #3277409) | Cod sursa (job #1590411) | Cod sursa (job #2270741)
#include <fstream>
#include <stdio.h>
using namespace std;
FILE *fin=fopen("cautbin.in","r");
ofstream fout("cautbin.out");
int n,m,i,v[100002],x,st,dr,poz;
unsigned int mid;
short q;
int main()
{
fscanf(fin,"%d",&n);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&v[i]);
fscanf(fin,"%d",&m);
for(i=1; i<=m; i++)
{
fscanf(fin,"%d%d",&q,&x);
st=1;dr=n;poz=0;
if(q==0)
{
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid]==x)
{
poz=mid;
st=mid+1;
}
else if(v[mid]<x)
st=mid+1;
else dr=mid-1;
}
if(poz==0)fout<<"-1\n";
else fout<<poz<<"\n";
}
else if(q==1)
{
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid]<=x)
{
poz=mid;
st=mid+1;
}
else
dr=mid-1;
}
fout<<poz<<"\n";
}
else ///q=2
{
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid]>=x)
{
poz=mid;
dr=mid-1;
}
else
st=mid+1;
}
fout<<poz<<"\n";
}
}
// fout<<sol;
return 0;
}