Cod sursa(job #2065642)

Utilizator madalin98Gherghe Madalin madalin98 Data 13 noiembrie 2017 23:26:34
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001];
int caut(int st,int dr,int x)
{
    int m,a;
    m=(st+dr)/2;
    if(st==dr)return -1;
    if(v[m]==x)a=m;
      else if(v[m]>x)a=caut(st,m,x);
            else if(v[m]<x)a=caut(m+1,dr,x);
    return a;
}
int main()
{
    int n,k,i,nr,opt,a;
    f>>n;
    for(i=1;i<=n;++i)f>>v[i];
    f>>nr;
    for(i=1;i<=nr;++i)
    {
        f>>opt>>k;
        if(opt==0){ a=caut(1,n,k);
            while(v[a+1]==k)a++;
                g<<a<<'\n';
                }
          else if(opt==1){a=caut(1,n,k);
                 while(v[a+1]<=k&&(a+1)<=n)a++;
                g<<a<<'\n';}
               else if(opt==2){a=caut(1,n,k);
                while(v[a-1]>=k&&v[a-1]>=1)a--;
                g<<a<<'\n';}
    }
    return 0;
}