Pagini recente » Cod sursa (job #1011731) | Cod sursa (job #912247) | Cod sursa (job #2690302) | Cod sursa (job #2848433) | Cod sursa (job #658755)
Cod sursa(job #658755)
#include <fstream>
using namespace std;
int a[100000],n,m,i,x,op;
int cautbin0 (int l, int r)
{
if (l<=r)
{
int m = (l+r)/2;
if (a[m] <= x) cautbin0 (m,r);
if (a[m] > x) cautbin0 (l,m);
}
m = (l + r)/2;
if (a[m] > x) m --;
if (a[m] == x) return m;
return -1;
}
int cautbin1 (int l, int r)
{
if (l<=r)
{
int m = (l+r)/2;
if (a[m] <= x) cautbin0 (m,r);
if (a[m] > x) cautbin0 (l,m);
}
m = (l + r)/2;
if (a[m]>x) m--;
return m;
}
int cautbin2 (int l, int r)
{
if (l<=r)
{
int m = (l+r)/2;
if (a[m] <= x) cautbin0 (m,r);
if (a[m] > x) cautbin0 (l,m);
}
m = (l + r)/2;
if ( a[m]<x) m++;
return m;
}
int main ()
{
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
f >>n;
for (i=1; i<=n; i++)
f >>a[i];
f >>m;
for (i=1; i<=m; i++)
{
f >> op >> x;
if (op==0) g <<cautbin0 (1,n);
if (op==1) g <<cautbin1 (1,n);
if (op==2) g <<cautbin2 (1,n);
}
return 0;
}