Cod sursa(job #2876874)

Utilizator CqkieJules Jules Cqkie Data 23 martie 2022 19:04:09
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int v[100001];
int main()
{
    int n, m, x, pas, j, q;
    fin>> n;
    for (int i=1;i<=n;i++)
        fin>>v[i];
    fin>>m;
    for (int i=1;i<=m;i++) {
        fin>>q>>x;
        if (q==0) {
                j=1;
            pas=1<<16;
            while (pas>0) {
                if (j+pas<=n && v[j+pas]<=x) {
                    j+=pas;
                }
                pas/=2;
            }
            if (v[j]==x)
                fout<<j<<endl;
            else
                fout<<-1<<endl;
        }
        else if (q==1) {
                j=1;
            pas=1<<16;
            while (pas>0) {
                if (j+pas<=n && v[j+pas]<=x) {
                    j+=pas;
                }
                pas/=2;
            }
            fout<<j<<endl;
        }
        else{
            j=1;
                pas=1<<17;
                while (pas>0) {
                    if (j+pas<=n && v[j+pas]<x) {
                        j+=pas;
                    }
            pas/=2;
            }
            fout<<j+1<<endl;
        }
    }
    return 0;
}