Cod sursa(job #2666594)
Utilizator | Andrei Bazavan andreibazavan | Data | 2 noiembrie 2020 10:54:39 |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.06 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,mijloc,st,dr,caz,e,m,v[100001];
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
fin>>m;
for(int i=1;i<=m;i++)
{
fin>>caz>>e;
st=1;
dr=n;
while(dr-st>1)
{
mijloc=(dr+st)/2;
if(v[mijloc]<e)
dr=mijloc;
else
st=mijloc;
// cout << st<<' ' <<dr<<' '<<mijloc << endl;
}
if(caz==0)
{
if(v[st]==e)
fout<<st<<'\n';
else
fout<<"-1"<<'\n';
}
if(caz==1)
{
while(v[st]>e)
st--;
fout<<st<<'\n';
}
if(caz==2)
{
while(v[st-1]==e)
st--;
while(v[st]<e)
st++;
fout<<st<<'\n';
}
}
//cout << "Hello world!" << endl;
return 0;
}