Mai intai trebuie sa te autentifici.

Cod sursa(job #1816302)

Utilizator xRoALexBirtoiu Alexandru xRoALex Data 26 noiembrie 2016 12:43:28
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <cstdio>

using namespace std;

FILE *f=fopen("cautbin.in","r");
FILE *g=fopen("cautbin.out","w");

int v[100000],n;


int rez1(int x)
{
    int pas=1<<16,r=0;
    while(pas!=0)
    {
        if(r+pas<=n)
        if(v[r+pas]<=x)
            r+=pas;
         pas/=2;
    }
    if(v[r]==x)
    return r;
    else return -1;
}

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

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

int main()
{
    int p,x,m,i;
    fscanf(f,"%d",&n);
    for(i=1; i<=n; i++)
        fscanf(f,"%d",&v[i]);
    fscanf(f,"%d",&m);
    for(i=1; i<=m; i++)
    {
        fscanf(f,"%d%d",&p,&x);
        if(p==0)
            fprintf(g,"%d\n",rez1(x));
        else  if(p==1)
            fprintf(g,"%d\n",rez2(x));
        else fprintf(g,"%d\n",rez3(x));
    }
    return 0;
}