Cod sursa(job #1396542)

Utilizator nicholascantarNicholas David Cantar Gogitidze nicholascantar Data 22 martie 2015 17:40:43
Problema Cautare binara Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <fstream>

using namespace std;
long n,m,v[100001],i,j,poz1,poz2,k;
int x,y;
int main()
{
    ifstream fin ("cautbin.in");
    ofstream fout ("cautbin.out");
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    fin>>m;
    for (k=1;k<=m;k++)
    {
        fin>>x>>y;
        if (x==0)
        {
            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) fout<<poz1<<'\n';
            else fout<<poz2<<'\n';
        }
        else if (x==1)
        {
            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) fout<<poz1<<'\n';
            else fout<<poz2<<'\n';
        }
        else
        {
            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) fout<<poz2<<'\n';
            else fout<<poz1<<'\n';
        }
    }
    return 0;
}