Cod sursa(job #580699)

Utilizator SadmannCornigeanu Calin Sadmann Data 13 aprilie 2011 13:28:32
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *in,*out;
int n,m,i,tip,val,x;
int v[100001];

int main()
{
    in=fopen("cautbin.in","rt");
    out=fopen("cautbin.out","wt");
    fscanf(in,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(in,"%d",&v[i]);
    fscanf(in,"%d",&m);
    while(m--)
    {
        fscanf(in,"%d %d",&tip,&val);
        if(!tip)
        {
            x = upper_bound(v + 1, v + n + 1, val) - v - 1;
            if (x <= n && x >= 1 && v[x] == val)
                fprintf(out,"%d\n",x);
            else
                fprintf(out,"-1\n");
        }
        if(tip==1)
        {
            x = lower_bound(v + 1, v + n + 1, val + 1) - v - 1;
            fprintf(out,"%d\n",x);

        }
        if(tip==2)
        {
            x = upper_bound(v + 1, v + n + 1, val - 1) - v;
            fprintf(out,"%d\n",x);
        }
    }

    return 0;
}