Cod sursa(job #2334560)

Utilizator Alexandru19Alexandru Gheorghiu Alexandru19 Data 2 februarie 2019 18:19:47
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100001];
int n;
int cbin(int val){
	int pos=0,i;
	for(int msk=1<<20;msk>0;msk/=2)
		if(pos+msk<=n && v[pos+msk]<=val)pos+=msk;
return pos;
}
int main()
{

    long long k,cop,b,i,l,m,c,sum=0;
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>v[i];
    }
    cin>>k;
    for(i=1;i<=k;i++){
        cin>>c>>m; cop=m;
        if(c==0){
            cop=cbin(m);
            if(v[cop]==m)
                cout<<cop;
            else
                cout<<-1;
        }
        else
            if(c==1)
        {
            cop=cbin(m);
            cout<<cop;
        }
        else
        {
            cop=cbin(m); //cout<<cop<<" ";
            while(v[cop]>=m)
            {
                cop--;
            }
            cout<<cop+1;
        }
        cout<<'\n';
    }


    return 0;
}