Pagini recente » Cod sursa (job #2157574) | Cod sursa (job #571076) | Cod sursa (job #1345859) | Cod sursa (job #2260146) | Cod sursa (job #2105917)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005], i, n, m, pr, ul, rs;
int cautbin_0(int p, int u, int x)
{
int mij;
while(p<u)
{
mij=(p+u)/2;
if(v[mij]<=x)
p=mij+1;
else
u=mij-1;
}
mij=(p+u)/2;
if(v[mij]>x)
--mij;
if(v[mij]==x)
return mij;
else
return -1;
}
int cautbin_1(int p, int u, int x)
{
int mij;
while(p<u)
{
mij=(p+u)/2;
if(v[mij]<=x)
p=mij+1;
else
u=mij-1;
}
mij=(p+u)/2;
if(v[mij]>x)
--mij;
return mij;
}
int cautbin_2(int p, int u, int x)
{
int mij;
while(p<u)
{
mij=(p+u)/2;
if(v[mij]<x)
p=mij+1;
else
u=mij;
}
mij=(p+u)/2;
if(v[mij]<x)
++mij;
return mij;
}
int main()
{
in>>n;
for(i=1; i<=n; ++i)
{
in>>v[i];
}
in>>m;
for(i=1; i<=m; ++i)
{
in>>pr>>ul;
if(pr==0)
rs=cautbin_0(1, n, ul);
else if(pr==2)
rs=cautbin_2(1, n, ul);
else
rs=cautbin_1(1, n, ul);
out<<rs<<"\n";
}
return 0;
}