Pagini recente » Cod sursa (job #1993077) | Cod sursa (job #3251415) | Cod sursa (job #2507858) | Cod sursa (job #1022381) | Cod sursa (job #2683196)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int cautBin1(int val, int n, const vector<int>v)
{
int left = 0;
int right = n-1;
int middle = (left+right)/2;
bool found = 0;
while(left <= right)
{
middle = (left + right) /2;
if(val >= v[middle])
{
left = middle + 1;
if(v[middle] == val)
found = 1;
}
else right = middle - 1;
}
if(found == 1)
return right;
return -1;
}
int cautBin2(int val, int n, const vector<int>v)
{
int left = 0;
int right = n-1;
int middle;
while(left <= right)
{
middle = (left + right) /2;
if(val >= v[middle])
left = middle + 1;
else right = middle - 1;
}
return right;
}
int cautBin3(int val, int n, const vector<int>v)
{
int left = 0;
int right = n-1;
int middle;
while(left <= right)
{
middle = (left + right) /2;
if(val <= v[middle])
right = middle -1;
else left = middle +1 ;
}
return left;
}
int main()
{
int n;
vector <int> v;
fin>>n;
v.resize(n);
for(int i=0; i<n; i++)
fin>>v[i];
int queryNr, query, nr;
fin>>queryNr;
for(int i=0; i<queryNr; i++)
{
fin>>query>>nr;
if(query == 0)
fout<<cautBin1(nr, n, v)+1<<'\n';
else if(query == 1)
fout<<cautBin2(nr, n, v)+1<<'\n';
else if(query == 2)
fout<<cautBin3(nr, n, v)+1<<'\n';
}
return 0;
}