Pagini recente » Cod sursa (job #2599678) | Cod sursa (job #2244270) | Cod sursa (job #346904) | Cod sursa (job #983765) | Cod sursa (job #2717305)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m;
vector <int> v;
int caut_bin0(int x) {
int st = 1, dr = n, mid;
while(st <= dr) {
mid = (st + dr) / 2;
if(v[mid] == x && v[mid + 1] != x)
return mid;
if(v[mid] <= x)
st = mid + 1;
else dr = mid - 1;
}
return -1;
}
int caut_bin1(int x) {
int st = 1, dr = n, mid, rez;
while(st <= dr) {
mid = (st + dr) / 2;
if(v[mid] <= x) {
rez = mid;
st = mid + 1;
}
else dr = mid - 1;
}
return rez;
}
int caut_bin2(int x) {
int st = 1, dr = n, mid, rez;
while(st <= dr) {
mid = (st + dr) / 2;
if(v[mid] >= x) {
dr = mid - 1;
rez = mid;
}
else st = mid + 1;
}
return rez;
}
int main()
{
f >> n;
v = vector <int> (n + 1);
for(int i = 1; i <= n; ++i)
f >> v[i];
f >> m;
int op, x;
for(int i = 1; i <= m; ++i) {
f >> op >> x;
if(op == 0)
g << caut_bin0(x) << "\n";
else if(op == 1)
g << caut_bin1(x) << "\n";
else g << caut_bin2(x) << "\n";
}
}