Cod sursa(job #1383834)

Utilizator karlaKarla Maria karla Data 10 martie 2015 18:11:36
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <stdio.h>

using namespace std;

FILE*f=fopen("cautbin.in","r"),*g=fopen("coutbin.out","w");
int v[100030], n, m, x, y;

int main()
{
    fscanf(f,"%d\n",&n);
    for(int i = 1; i <= n; i++)
    {
        fscanf(f,"%d ",&v[i]);
    }
    fscanf(f,"%d\n",&m);
    for(int i = 1; i <= m; i++)
    {
        fscanf(f,"%d %d\n", &x, &y);
        int p = 1, u = n, mij;
        if(x == 2)
        {
            while(p <= u)
            {
                mij = (p+u) / 2;
                if(v[mij] >= y)
                {
                    u = mij - 1;
                }
                else{
                    p = mij + 1;
                }
            }
            fprintf(g,"%d\n",p);
        }
        else {
            while(p <= u)
            {
                mij = (p+u) / 2;
                if(v[mij] <= y)
                {
                    p = mij + 1;
                }
                else{
                    u = mij - 1;
                }
            }
            if(v[u] == y && x == 0)
            {
                fprintf(g,"%d\n",u);
            }
            else if(v[u] != y && x == 0)
                fprintf(g,"-1\n");
            else
                fprintf(g,"%d\n",u);
        }
    }
    return 0;
}