Pagini recente » Cod sursa (job #601645) | Cod sursa (job #1381931) | Cod sursa (job #2415037) | Cod sursa (job #120825) | Cod sursa (job #451792)
Cod sursa(job #451792)
#include<fstream.h>
#define N 100010
int v[N];
int bsearch0 (int p, int u, int key)
{
int m1;
while (p <= u)
{
m1=(p + u)/2;
if (v[m1] <= key)
p = m1 + 1;
else
u = m1 - 1;
}
m1 = (p + u) / 2;
if (v[m1] > key) m1--;
if (v[m1] == key)
return m1;
return -1;
}
int bsearch1 (int p, int u, int key) {
int m1, n = u;
while (p < u)
{
m1 = (p + u) / 2;
if (v[m1] <= key)
p = m1 + 1;
else
u = m1;
}
m1 = (p + u) / 2;
if (v[m1] > key)
m1--;
return m1;
}
int bsearch2 (int p, int u, int key) {
int m1;
while (p < u)
{
m1 = (p + u) / 2;
if (v[m1] < key)
p = m1 + 1;
else
u = m1;
}
m1 = (p + u) / 2;
if (v[m1] < key)
m1++;
return m1;
}
int main ()
{
int i, n, m, tip, val;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for (i =1;i<=n;i++)
f>>v[i];
f>>m;
while(m)
{
f>>tip>>val;
if (tip==0)
g<<bsearch0(1,n,val)<<"\n";
if (tip==1)
g<<bsearch1(1,n,val)<<"\n";
if (tip==2)
g<<bsearch2(1,n,val)<<"\n";
m--;
}
}