Pagini recente » Cod sursa (job #2514321) | Cod sursa (job #2845188) | Cod sursa (job #1014526) | Cod sursa (job #3213511) | Cod sursa (job #294177)
Cod sursa(job #294177)
# include <fstream>
using namespace std;
int n, m, a[100005];
struct tip {
int q, x;};
tip b[100005];
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
void citire ()
{
int i;
fin>>n;
for (i=1;i<=n;i++)
fin>>a[i];
fin>>m;
for (i=1;i<=m;i++)
fin>>b[i].q>>b[i].x;
}
int caut0 (int x)
{
int st=1, dr=n, mid;
while (st<=dr)
{
mid=st+(dr-st)/2;
if (a[mid]==x)
return mid;
else
if (a[mid]>=x)
dr=mid-1;
else
st=mid+1;
}
return -1;
}
int caut1 (int x)
{
int st=1, dr=n, mid, w=0;
while (st<=dr)
{
mid=st+(dr-st)/2;
if (a[mid]<=x)
w=mid, st=mid+1;
else
dr=mid-1;
}
return w;
}
int caut2 (int x)
{
int st=1, dr=n, w=0, mid;
while (st<=dr)
{
mid=st+(dr-st)/2;
if (a[mid]>=x)
{ w=mid; dr=mid-1;}
else
st=mid+1;
}
return w;
}
void rez ()
{
int i, x, q;
citire ();
for (i=1;i<=m;i++)
if (q==0)
fout<<caut0(x)<<endl;
else
if (q==1)
fout<<caut1(x)<<endl;
else
fout<<caut2(x)<<endl;
}
int main ()
{
rez ();
return 0;
}