Pagini recente » Cod sursa (job #2839542) | Cod sursa (job #412399) | Cod sursa (job #74942) | Cod sursa (job #848349) | Cod sursa (job #2868138)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int CB0(int v[],int n,int x)
{
int s = 1,d = n,mij;
while(s <= d)
{
mij = (s+d)/2;
if(v[mij] == x)
{
if(v[mij+1] == x)
{
s = mij+1;
d = mij+1;
}
else
{
return mij;
}
}
if(v[mij] < x)
{
s = mij+1;
}
else if(v[mij] > x)
{
d = mij-1;
}
}
return -1;
}
int CB1(int v[],int n,int x)
{
int s=1, d=n,mij;
while (s < d)
{
mij = (s + d)/2;
if (v[mij] <= x)
{
s = mij+1;
}
else
{
d = mij;
}
}
mij = (s + d)/2;
if (v[mij] > x)
{
mij--;
}
return mij;
}
int CB2(int v[],int n,int x)
{
int s=1, d=n,mij;
while (s < d)
{
mij = (s + d)/2;
if (v[mij] < x)
{
s = mij+1;
}
else
{
d = mij;
}
}
mij = (s + d)/2;
if (v[mij] < x)
{
mij++;
}
return mij;
}
int main()
{
int n;
cin>>n;
int v[100001];
for(int i = 1; i <= n; i++)
{
cin>>v[i];
}
int m;
cin>>m;
for(int i = 0; i < m; i++)
{
int x,y;
cin>>x>>y;
if(x == 0)
{
cout<<CB0(v,n,y)<<'\n';
}
else if(x == 1)
{
cout<<CB1(v,n,y)<<'\n';
}
else if(x == 2)
{
cout<<CB2(v,n,y)<<'\n';
}
}
return 0;
}