Pagini recente » Cod sursa (job #3175299) | Cod sursa (job #619457) | Cod sursa (job #3294251) | Cod sursa (job #2646280) | Cod sursa (job #1885820)
#include <bits/stdc++.h>
using namespace std;
int caut_bin(const vector<int> & v, const int x){
int i=0;
for(int sure= (1<<19); sure>0; sure=sure/2)
{
if(sure+i < v.size() && v[i+sure] <= x)
i=sure+i;
}
return i; }
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n;
f >> n;
vector<int> v(n);
for(int i = 0; i < n; ++i){
f >> v[i]; }
int m;
f >> m;
for(int i = 0, t, x; i < m; ++i){
f >> t >> x;
if(t == 1)
g << caut_bin(v, x)+1 << '\n';
else if(t == 2)
g << caut_bin(v, x-1)+1 +1 << '\n';
else{
const int tmp = caut_bin(v, x);
if(v[tmp] == x) g << tmp+1 << '\n';
else g << -1 << '\n'; } }
return 0; }