Cod sursa(job #1423716)

Utilizator george99Darie George george99 Data 22 aprilie 2015 14:02:00
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,v[100001],i,j,poz1,poz2,k;
int x,y;
void solve0()
{
    i=1;
    j=n;
    poz1=-1;
    poz2=-1;
    while (i<=j)
        {
            if (v[j]==y) {poz1=j;break;}
            else if (v[i]==y) poz2=i;
            i++;
            j--;
        }
    if (poz1!=-1) g<<poz1<<'\n';
        else g<<poz2<<'\n';
}
void solve1()
{
    i=1;
    j=n;
    poz1=-1;
    poz2=-1;
    while (i<=j)
        {
        if (v[j]<=y) {poz1=j;break;}
        else if (v[i]<=y) poz2=i;
        i++;
        j--;
        }
    if (poz1!=-1) g<<poz1<<'\n';
    else g<<poz2<<'\n';
}
void solve2()
{
    i=1;j=n;
    poz1=-1;
    poz2=-1;
    while (i<=j)
        {
        if (v[i]>=y) {poz2=i;break;}
        else if (v[j]>=y) {poz1=j;}
        i++;
        j--;
        }
    if (poz2!=-1) g<<poz2<<'\n';
    else g<<poz1<<'\n';
}
int main()
{   f>>n;
    for (i=1;i<=n;i++)f>>v[i];
    f>>m;
    for (k=1;k<=m;k++)
    {
        f>>x>>y;
        if (x==0)solve0();
        else if (x==1)solve1();
        else solve2();
    }
    g.close();
    return 0;
}