Pagini recente » Cod sursa (job #1402718) | Cod sursa (job #3131846) | Cod sursa (job #2772646) | Cod sursa (job #2881914) | Cod sursa (job #1941320)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001], n, m, p, y, x;
int cautbin0(int p,int u,int key)
{ int m;
while (p <= u) {
m = (p + u) / 2;
if (v[m] <= key)
p = m + 1;
else
u = m - 1;
}
m = (p + u) / 2;
if (v[m] > key) m --;
if (v[m] == key)
return m;
return -1;
}
int cautbin1(int p,int u,int key)
{ int m, n = u;
while (p < u){
m = (p + u) / 2;
if (v[m] <= key)
p = m + 1;
else
u = m;
}
m = (p + u) / 2;
if (v[m] > key)
-- m;
return m;
}
int cautbin2(int p,int u,int key)
{
int m;
while (p < u) {
m = (p + u) / 2;
if (v[m] < key)
p = m + 1;
else
u = m;
}
m = (p + u) / 2;
if (v[m] < key)
++ m;
return m;
}
int main()
{ int i;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>p;
for(i=1;i<=p;i++){
f>>y>>x;
if(y==0)
g<<cautbin0(1,n,x)<<'\n';
else if(y==1)
g<<cautbin1(1,n,x)<<'\n';
else if(y==2)
g<<cautbin2(1,n,x)<<'\n';
}
}