Cod sursa(job #2047089)

Utilizator tameliaAmelia Trifu tamelia Data 24 octombrie 2017 15:52:53
Problema Cautare binara Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.06 kb
#include <stdio.h>
#include <stdlib.h>
int v[100001];
int functie(int valoare, int n)
{
  int inceput,sfarsit,mijloc, ans;
  inceput=1;
  sfarsit=n;
  while(inceput<=sfarsit)
  {
    mijloc=(sfarsit+inceput)/2;
    if(v[mijloc]<=valoare)
    {
      inceput=mijloc+1;
      ans = mijloc;
    }
    else
      sfarsit=mijloc-1;
  }
  return ans;
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("cautbin.in","r");
    fout=fopen("cautbin.out","w");
    int n,j,i,x,m,poz,c;
    fscanf(fin,"%d",&n);
    for(j=1;j<=n;j++)
      fscanf(fin,"%d",&v[j]);
    fscanf(fin,"%d",&m);
    for(j=1;j<=m;j++)
    {
      fscanf(fin,"%d%d",&c,&x);
      if(c==0)
      {
        poz=functie(x,n);
        if(v[poz]==x)
          fprintf(fout,"%d\n",poz);
        else
          fprintf(fout,"-1\n");
      }
      else
      {
        if(c==2)
        {
          poz=functie(x-1,n);
          fprintf(fout,"%d\n",poz+1);
        }
        else
        {
          poz=functie(x,n);
          fprintf(fout,"%d\n",poz);
        }
      }
    }
    fclose(fin);
    fclose(fout);
    return 0;
}