Pagini recente » Cod sursa (job #2268192) | Cod sursa (job #2488209) | Cod sursa (job #1383106) | Cod sursa (job #801821) | Cod sursa (job #1817356)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int cb0(int x, int v[], int n)
{
int i,m,s;
i=1; s=n;
while(i<=s)
{
m=(i+s)/2;
if(x>=v[m])
{
i=m;
}
else s=m;
if(s-i==1)
{
if(v[i]!=x and v[s]!=x)return -1;
else
{
if(v[s]==x)return s;
if(v[i]==x)return i;
}
}
}
}
int cb1(int x, int v[], int n)
{
int i,m,s;
i=1; s=n;
while(i<=s)
{
m=(i+s)/2;
if(x>=v[m])
{
i=m;
}
else s=m;
if(s-i==1)
{
if(v[i]!=x and v[s]!=x)return -1;
else
{
if(v[s]==x)return s;
if(v[i]==x)return i;
}
}
}
}
int cb2
(int x, int v[], int n)
{
int i,m,s;
i=1; s=n;
while(i<=s)
{
m=(i+s)/2;
if(x<=v[m])
{
s=m;
}
else i=m;
if(s-i==1)
{
if(v[i]!=x and v[s]!=x)return -1;
else
{
if(v[s]==x)return s;
if(v[i]==x)return i;
}
}
}
}
int main()
{
int n,v[100010];
in>>n;
for(int i=1; i<=n; i++)
in>>v[i];
int m;
in>>m;
while(m)
{
int caz, x;
in>>caz>>x;
if(caz==0)
{
out<<cb0(x,v,n)<<endl;
}
if(caz==1)
{
out<<cb1(x,v,n)<<endl;
}
if(caz==2)
{
out<<cb2(x,v,n)<<endl;
}
m--;
}
return 0;
}