Cod sursa(job #1077668)
Utilizator | Data | 11 ianuarie 2014 16:00:47 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.12 kb |
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int main()
{
int u, p, n, m, v[n], mijloc, tip, val;
in>>n;
for(int i=1;i<=n; i++)
in>>v[i];
in>>m;
while(m--)
{
in>>tip>>val;
if(tip==0)
{
p=1;
u=m;
while (p<u-1)
{mijloc=(p+u)/2;
if(v[mijloc]<=val)
p=mijloc;
else u=mijloc;
}
if(v[p]==val)
out<<p<<endl;
else out<<-1<<endl;
}
if(tip==1)
{
p=1;
u=m;
while(p<u-1)
{
mijloc=(p+u)/2;
if(v[mijloc]<=val)
p=mijloc;
else u=mijloc;
}
out<<p<<endl;
}
if(tip==2)
{
p=1;
u=n;
while(p<u-1)
{
mijloc=(p+u)/2;
if(v[mijloc]>=val)
p=mijloc;
else u=mijloc;
}
out<<p<<endl;
}
}
return 0;
}