Pagini recente » Cod sursa (job #2246761) | Cod sursa (job #1634262) | Cod sursa (job #564791) | Cod sursa (job #2084960) | Cod sursa (job #3198507)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, v[100001], m, t, x;
void cautbinar0(int x)
{
int st, dr, poz, mij;
poz=-1;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(x==v[mij])
{
poz=mij;
st=mij+1;
}
else
{
if(x>v[mij]) st=mij+1;
else dr=mij-1;
}
}
fout << poz << '\n';
}
void cautbinar1(int x)
{
int st, dr, poz, mij;
poz=-1;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(x>=v[mij])
{
poz=mij;
st=mij+1;
}
else dr=mij-1;
}
fout << poz << '\n';
}
void cautbinar2(int x)
{
int st, dr, poz, mij;
poz=-1;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(x<=v[mij])
{
poz=mij;
dr=mij-1;
}
else st=mij+1;
}
fout << poz << '\n';
}
int main()
{
fin >> n;
for(int i=1; i<=n; i++)
fin >> v[i];
fin >> m;
for(int i=1; i<=m; i++)
{
fin >> t >> x;
if(t==0) cautbinar0(x);
else if(t==1) cautbinar1(x);
else if(t==2) cautbinar2(x);
}
return 0;
}