Cod sursa(job #1003308)
| Utilizator | Data | 30 septembrie 2013 12:52:50 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.01 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
//ofstream g("cautbin.in");
int n,op,x,a[100000];
int cb1(int st, int dr, int x)
{
int mij = (st+dr)/2;
if(dr-st<2)
{
return -1;
}
if(a[mij]==x)
{
int i=mij;
while(a[i]==x)
{
i++;
}
return i-1;
}
else
{
if(x<a[mij])
{
return cb1(st, mij, x);
}
else
{
return cb1(mij,dr,x);
}
}
}
int main()
{
f>>n;
for(int i=0;i<n;i++)
{
f>>a[i];
}
int m;
f>>m;
for(int i=0;i<m;i++)
{
f>>op;
f>>x;
switch(op)
{
case 0:
cout<<cb1(0,n,x)+1;
break;
case 1:
cout<<cb2(0,n,x)+1;
break;
case 2:
break;
}
}
return 0;
}
