Cod sursa(job #2175564)

Utilizator xXoctavianXxStanescu Matei Octavian xXoctavianXx Data 16 martie 2018 17:50:38
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.57 kb
#include <stdio.h>
#include <math.h>
int n,t,x,m;
int stanga,dreapta,mijloc;
int v[100001];
int main()
{
    FILE* si=fopen("cautbin.in","r");
    FILE* so=fopen("cautbin.out","w");
    fscanf(si,"%d",&n);
    for(int i=0; i<n; i++) fscanf(si,"%d",&v[i]);
    fscanf(si,"%d",&m);
    for(int i=0; i<m; i++)
    {
        fscanf(si,"%d%d",&t,&x);
        if(t==0)
        {
            int poz=-1;
            stanga=0;
            dreapta=n;
            while(dreapta-stanga>1)
            {
                mijloc=(stanga+dreapta)/2;
                if(v[mijloc]>x) dreapta=mijloc;
                else stanga=mijloc;
                if(v[mijloc]==x) poz=mijloc;
            }
            fprintf(so,"%d\n",poz+1);
        }
        if(t==1)
        {
            int poz=-1;
            stanga=0;
            dreapta=n;
            while(dreapta-stanga>1)
            {
                mijloc=(stanga+dreapta)/2;
                if(v[mijloc]>x) dreapta=mijloc;
                else stanga=mijloc;
                if(v[mijloc]<=x) poz=mijloc;
            }
            fprintf(so,"%d\n",poz+1);
        }
        if(t==2)
        {
            int poz=-1;
            stanga=0;
            dreapta=n;
            while(dreapta-stanga>1)
            {
                mijloc=(stanga+dreapta)/2;
                if(v[mijloc]>=x) dreapta=mijloc;
                else stanga=mijloc;
                if(v[mijloc]>=x) poz=mijloc;
            }
            fprintf(so,"%d\n",poz+1);
        }
    }
    fclose(si);
    fclose(so);
    return 0;
}