Pagini recente » Cod sursa (job #2709642) | Cod sursa (job #926306) | Cod sursa (job #2184820) | Cod sursa (job #2764830) | Cod sursa (job #837677)
Cod sursa(job #837677)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,t;
int a[100000];
int caut0(int *a,int n,int x)
{
int st=1;
int dr=n;
int m;
while (dr>=st)
{
m=(dr+st)/2;
if (x>=a[m])
{
st=m+1;
}
else
if (x<=a[m])
{
dr=m-1;
}
}
m=(st+dr)/2;
if (a[m]==x) return m;
else return -1;
}
int caut1(int *a,int n, int x)
{
int st=1;
int dr=n;
int m;
while (dr>=st)
{
m=(st+dr)/2;
if (x>=a[m])
{
st=m+1;
}
else
{
dr=m-1;
}
}
m=(st+dr)/2;
return m;
}
int caut2(int *a,int n, int x)
{
int st=1;
int dr=n;
int m;
while (st<dr)
{
m=(st+dr)/2;
if (x<=a[m])
dr=m;
else
st=m+1;
}
m=(st+dr)/2;
return m;
}
int main()
{
int i;
in>>n;
for (i=1;i<=n;i++)
in>>a[i];
in>>t;
for (i=1;i<=t;i++)
{
int val,x;
in>>val>>x;
if (val==0) out<<caut0(a,n,x)<<'\n';
if (val==1) out<<caut1(a,n,x)<<'\n';
if (val==2) out<<caut2(a,n,x)<<'\n';
}
return 0;
}