Cod sursa(job #2346999)

Utilizator DajaMihaiDaja Mihai DajaMihai Data 18 februarie 2019 12:09:48
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

using namespace std;

ifstream cin ("cautbin.in");
ofstream cout ("cautbin.out");

int N, M, x, y;
int v[100001];

int count2(int x){
  int L = 16;
  int r=0,pas=1<<L;
  while(pas!=0){
    if(r+pas<=N && v[r+pas]<x){
      r+=pas;
    }
    pas/=2;
  }
  r++;
  return r;

}

int main()
{
    cin >> N;
    for(int i = 0; i < N; i ++)
        cin >> v [i];
    cin >> M;
    for (int i = 0; i < M; i ++)
    {
        cin >> x >> y;
        if (x == 0)
        {
            int z = -1;
            for (int j = 0; j < N; j ++)
            {
                if (v [j] == y)
                    z = j + 1;
            }
                cout << z<< '\n';
        }
        else if (x == 1)
        {
            int z = -1;
            for (int j = 0; j < N; j ++)
            {
                if (v [j] <= y)
                    z = j + 1;
            }
                cout << z << '\n';
        }
        else if (x == 2)
        {
                cout << count2 (y) + 1 << '\n';
        }
    }
    return 0;
}