Pagini recente » Cod sursa (job #321867) | Cod sursa (job #183565) | Cod sursa (job #25927) | Cod sursa (job #94585) | Cod sursa (job #2613255)
#include <iostream>
#include <fstream>
#define N 100001
int v[N];
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int bin0(int u, int val)
{
int m, p = 1;
while (p < u)
{
m = (p + u) / 2;
if (v[m] <= val)
p = m + 1;
else
u = m - 1;
}
m = (p + u) / 2;
while (v[m] > val)
m--;
if (v[m] == val)
return m;
return -1;
}
int bin1(int u, int val)
{
int m, p = 1;
while (p < u)
{
m = (p + u) / 2;
if (v[m] <= val)
p = m + 1;
else
u = m - 1;
}
m = (p + u) / 2;
while (v[m] > val)
m--;
return m;
}
int bin2(int u, int val)
{
int m, p = 1;
while (p < u)
{
m = (p + u) / 2;
if (v[m] <= val)
p = m + 1;
else
u = m - 1;
}
m = (p + u) / 2;
while (v[m] >= val)
m--;
if (v[m + 1] == val)
return m + 1;
return m;
}
int main()
{
int n,m,tip,val;
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
fin>>m;
while(m)
{
fin>>tip;
fin>>val;
if(tip==0)
fout<<bin0(n, val)<<"\n";
if(tip==1)
fout<<bin1(n, val)<<"\n";
if(tip==2)
fout<<bin2(n, val)<<"\n";
m--;
}
return 0;
}