Cod sursa(job #444076)

Utilizator nopiulianGavrila Iulian nopiulian Data 19 aprilie 2010 12:20:32
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Tema 10D #1 Marime 0.97 kb
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int sir[100001],n,deci,x,m;
void citire()
{ for(int i=1;i<=n;i++)
    f>>sir[i];
}
void solve()
{ int st=1,dr=n,mijl,sol;
  bool ok=0;
  f>>deci>>x;
  if(deci==0)
  { while(st<=dr)
    { mijl=(st+dr)/2;
      if(sir[mijl]==x)
      { st=mijl+1;
        sol=mijl;
      }
      else
        dr=mijl-1;
    }
    g<<sol<<'\n';
  }  else
    if(deci==1)
    { while(st<=dr)
      { mijl=(st+dr)/2;
       if(sir[mijl]<=x)
       { st=mijl+1;
          sol=mijl;
        }
        else
        dr=mijl-1;
      }
    g<<sol<<'\n';
    }
   else
    { while(st<=dr)
      { mijl=(st+dr)/2;
        if(sir[mijl]>=x)
        { dr=mijl-1;
         sol=mijl;
        }
        else
            st=mijl+1;
      }
    g<<sol<<'\n';
    }
}
int main()
{ f>>n;
  citire();
  f>>m;
  for(int i=1;i<=m;i++)
    solve();
  f.close();
  g.close();
  return 0;
}