Cod sursa(job #1766392)

Utilizator dranoellenTurica Leonard-Petru dranoellen Data 27 septembrie 2016 21:48:07
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
//#include <cstdio>
#include<iostream>
#include <fstream>
using namespace std;
//FILE *re=fopen("cautbin.in","r"),*wr=fopen("cautbin.out","w");
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");



int n, vect[10000],m;


int bin(int i,int j,int x)
{
    int m=(i+j)/2;
    if(i==j)return i;
    if(x<vect[m])return (bin(i,m,x));
    else return(bin(m+1,j,x));

}



int main()
{
    fin>>n;
    //fscanf(re,"%d",&n);
    int i,cmmandid,subject;
    vect[n]=2147483647;
    for(i=0; i<n; ++i)fin>>vect[i];
        //fscanf(re,"%d",&vect[i]);
    //fscanf(re,"%d",&m);
    fin>>m;
    for(i=0; i<m; ++i)
    {
        fin>>cmmandid>>subject;
        //fscanf(re,"%d%d",&cmmandid,&subject);
        if(cmmandid==0)
        {
            int x=bin(0,n-1,subject);

            if(vect[--x]==subject)
                fout<<x+1<<'\n';
                //fprintf(wr,"%d\n",x+1);
            else
                fout<<-1<<'\n';
                //fprintf(wr,"%d\n",-1);
        }
        if(cmmandid==1)
        {
            int x=bin(0,n-1,subject);
            fout<<x<<'\n';
            //fprintf(wr,"%d\n",x);
        }
        if(cmmandid==2)
        {
            int x=bin(0,n-1,subject-1);
            fout<<x+1<<'\n';
            //fprintf(wr,"%d\n",x+1);
        }

    }
    return 0;
}