Pagini recente » Cod sursa (job #566338) | Cod sursa (job #2682484) | Cod sursa (job #782123) | Cod sursa (job #1554926) | Cod sursa (job #1008942)
#include <iostream>
#include <fstream>
#define L_MAX 100010
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[L_MAX], N, M, x;
int bsearch(int lo, int hi)
{
lo = 1;
hi = N;
while (lo <= hi)
{
int mid = lo + (hi-lo)/2;
/*if (v[mid] == x)
return mid;*/
if (v[mid] <= x)
lo = mid+1;
else
hi = mid-1;
}
if(v[hi] == x) return hi;
else return -1;
}
int b1search(int lo, int hi)
{
lo = 1;
hi = N;
while (lo <= hi)
{
int mid = lo + (hi-lo)/2;
/*if (v[mid] == x)
return mid;*/
if (v[mid] <= x)
lo = mid+1;
else
hi = mid-1;
}
return hi;
}
int b2search(int lo, int hi)
{
lo = 1;
hi = N;
while (lo <= hi)
{
int mid = lo + (hi-lo)/2;
/*if (v[mid] == x)
return mid;*/
if (v[mid] >= x)
hi = mid-1;
else
lo = mid+1;
}
return lo;
}
int main()
{
in >> N;
for(int i = 1; i <= N; i++)
in >> v[i];
in >> M;
for(int i = 0; i < M; i++)
{
int t;
in >> t;
if(t == 0)
{
in >> x;
out << bsearch(1, N) << "\n";
}
if(t == 1)
{
in >> x;
out << b1search(1, N) << "\n";
}
if(t == 2)
{
in >> x;
out << b2search(1, N) << "\n";
}
}
in.close();
out.close();
return 0;
}