Pagini recente » Cod sursa (job #810995) | Cod sursa (job #1019616) | Cod sursa (job #1716923) | Cod sursa (job #2769686) | Cod sursa (job #2158316)
#include <iostream>
#include <fstream>
#define nmax 100000
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[nmax],N,tip,val,m,valoare;
void cauta0(int valoare)
{
int st=1,dr=N,poz=-1,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]==valoare)
{
poz=mij;
st=mij+1;
}
else if(v[mij]<valoare)
st=mij+1;
else dr=mij-1;
}
fout<< poz<<'\n';
}
void cauta1(int valoare)
{
int st=1,dr=N,mij,poz=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<=valoare)
{
st=mij+1;
poz=mij;
}
else dr=mij-1;
}
fout<<poz<<'\n';
}
void cauta2(int valoare)
{
int st=1,mij,dr=N,poz=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(valoare<=v[mij])
{
dr=mij-1;
poz=mij;
}
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>>tip>>valoare;
if(tip==0) cauta0(valoare);
else if(tip==1) cauta1(valoare);
else cauta2(valoare);
}
return 0;
}