Cod sursa(job #1303266)

Utilizator alexchireaAlexandru Chirea alexchirea Data 27 decembrie 2014 20:02:43
Problema Cautare binara Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[100001],m,p,x,i,a,t;
int main()
{
    f>>n;
    for (i=1; i<=n;i++) f>>v[i];
    f>>m;
    for (a=1; a<=m; a++)
    {
        f>>p>>x;
        if (p==0)
        {
            t=0;
            if (x<v[n/2]) {for (i=n/2;i>0;i--) if (v[i]==x) {g<<i<<endl;t=1;break;}}
            else {for (i=n;i>=n/2;i--) if (v[i]==x) {g<<i<<endl;t=1;break;}}
            if (t==0) g<<-1<<endl;
        }
        else if (p==1)
        {
            if (x<v[n/2]) {for (i=n/2;i>0;i--) if (v[i]<=x) {g<<i<<endl;break;}}
            else {for (i=n;i>=n/2;i--) if (v[i]<=x) {g<<i<<endl;break;}}
        }
        else
        {
            if (x<=v[n/2]) {for (i=1;i<n/2;i++) if (v[i]>=x) {g<<i<<endl;break;}}
            else {for (i=n/2;i<=n;i++) if (v[i]>=x) {g<<i<<endl;break;}}
        }
    }
    return 0;
}