Cod sursa(job #1428857)

Utilizator zacuscaAlex Iordache zacusca Data 5 mai 2015 10:47:14
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <fstream>
#define MAXN 100001
using namespace std;
ifstream f1("colina.in");
ofstream g1("colina.out");
int n1,m1,v1[MAXN],poz;
class prob2
{
private:
    int binsearch1(int x);
    int binsearch2(int x);
public:
    void rez2();
};
int prob2::binsearch1(int x)
{
    int st=1,dr=poz-1,mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v1[mij]==x)return mij;
        else if(v1[mij]<x)st=mij+1;
        else dr=mij-1;
    }
    return 0;
}
int prob2::binsearch2(int x)
{
    int st=poz,dr=n1;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(v1[mij]==x)return mij;
        else if(v1[mij]>x)st=mij+1;
        else dr=mij-1;
    }
    return 0;
}
void prob2::rez2()
{
    f1>>n1>>m1;
    int i;
    for(i=1; i<=n1; i++)
    {
        f1>>v1[i];
        if(v1[i]<v1[i-1]&&!poz)poz=i;
    }
    int x,b1=0,b2=0;
    for(i=1; i<=m1; i++)
    {
        f1>>x;
        b1=binsearch1(x);
        b2=binsearch2(x);
        if(b1||b2)
        {
            g1<<"DA ";
            if(b1)g1<<b1<<' ';
            if(b2)g1<<b2;
            g1<<'\n';
        }
        else
            g1<<"NU"<<'\n';
    }
}
int main()
{
    prob2  ob;
    ob.rez2();
    return 0;
}