Pagini recente » Cod sursa (job #1087576) | Cod sursa (job #1072044) | Cod sursa (job #594876) | Cod sursa (job #1183768) | Cod sursa (job #2436427)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
vector <int> A;
int N,x,o,q;
int bin_0(int left,int right,int value)
{
int ans=-1;
while(left<=right)
{
int middle=(left+right)/2;
if(value>=A[middle]) {
if(value==A[middle])ans=middle;
left=middle+1;
}
else right=middle-1;
}
return ans+1;
}
int bin_1(int left,int right,int value)
{
int ans=0;
while(left<=right)
{
int middle=left+(right-left)/2;
if(value>=A[middle])
{
if(A[middle]==value) ans=middle;
left=middle+1;
}
else right=middle-1;
}
return ans+1;
}
int bin_2(int left,int right,int value)
{
int ans=0;
while(left<=right)
{
int middle=left+(right-left)/2;
if(value<=A[middle])
{
if(A[middle]==value) ans=middle;
right=middle-1;
}
else left=middle+1;
}
return ans+1;
}
void solveQuery(int o,int x)
{
if(o==0)
{
fout<<bin_0(0,A.size()-1,x);
}
else if(o==1)
{
fout<<bin_1(0,A.size()-1,x);
}
else fout<<bin_2(0,A.size()-1,x);
fout<<'\n';
}
void read()
{
fin>>N;
for(int i=0;i<N;i++)
{
fin>>x;
A.push_back(x);
}
fin>>q;
for(int i=0;i<q;i++)
{
fin>>o>>x;
solveQuery(o,x);
}
}
int main()
{
read();
return 0;
}