Pagini recente » Cod sursa (job #2888277) | Cod sursa (job #2483093) | Cod sursa (job #557694) | Cod sursa (job #1521975) | Cod sursa (job #2634055)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[100001],m,x,y;
int x1 (int val)
{
int st=1,sf=n,lm;
while (st<=sf)
{
lm=(st+sf)/2;
if (v[lm]>val)
{
sf=lm-1;
}
else
{
st=lm+1;
}
}
if (v[lm]!=val)
lm--;
if (v[lm]==val)
return lm;
else return -1;
}
int x2 (int val)
{
int st=1,sf=n,lm;
while (st<=sf)
{
lm=(st+sf)/2;
if (v[lm]>val)
sf=lm-1;
else st=lm+1;
}
lm=(st+sf)/2;
return lm;
}
int x3 (int val)
{
int st=1,sf=n,lm;
while (st<=sf)
{
lm=(st+sf)/2;
if (v[lm]>=val)
sf=lm-1;
else st=lm+1;
}
lm=(st+sf)/2;
if (v[lm]<val)
lm++;
return lm;
}
int main()
{
f>>n;
for (int i=1; i<=n; i++)
{
f>>v[i];
}
f>>m;
for (int i=0; i<m; i++)
{
f>>x>>y;
if (x==0)
{
g<<x1(y)<<'\n';
}
else if (x==1)
{
g<<x2(y)<<'\n';
}
else
{
g<<x3(y)<<'\n';
}
}
return 0;
}