Pagini recente » Istoria paginii runda/info_conquiztador002 | Cod sursa (job #153305) | Cod sursa (job #608215) | Cod sursa (job #333948) | Cod sursa (job #1360466)
#include <iostream>
#include <fstream>
using namespace std;
int v[1000000];
ifstream in("cautbin.in");
ofstream out("cautbin.out");
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,n,m,tip,val;
in>>n;
for(i=1;i<=n;++i)
in>>v[i];
in>>m;
while(m--)
{
in>>tip>>val;
if (tip==0)
out<<cautbin0(1, n, val)<<'\n';
if (tip==1)
out<<cautbin1(1, n, val)<<'\n';
if (tip==2)
out<<cautbin2(1, n, val);
}
return 0;
}