Cod sursa(job #3183664)
Utilizator | Data | 12 decembrie 2023 17:46:27 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.77 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int t[100005],q1[100005],q2[100005];
int main()
{
int i, j, nrnr, nrintrebari, st, dr, mij, poz1, poz2, poz3;
fin >> nrnr;
for (i=1;i<=nrnr;i++)
fin >> t[i];
fin >> nrintrebari;
for (j=1;j<=nrintrebari;j++)
fin >> q1[j] >> q2[j] ;
for (j=1;j<=nrintrebari;j++)
{
if(q1[j]==0)
{
dr=nrnr;
st=1;
poz1=-1;
while (st<=dr)
{
mij=(st+dr)/2;
if (t[mij]==q2[j])
{
poz1=mij;
st=mij+1;
}
else if (t[mij]>q2[j])
dr=mij-1;
else
st=mij+1;
}
fout << poz1 <<'\n';
}
if(q1[j]==1)
{
dr=nrnr;
st=1;
poz2=0;
while (st<=dr)
{
mij=(st+dr)/2;
if (t[mij]<=q2[j])
{
poz2=mij;
st=mij+1;
}
else
dr=mij-1;
}
fout << poz2 <<'\n';
}
if(q1[j]==2)
{
dr=nrnr;
st=1;
poz3=0;
while (st<=dr)
{
mij=(st+dr)/2;
if (t[mij]>=q2[j])
{
poz3=mij;
dr=mij-1;
}
else
st=mij+1;
}
fout << poz3 <<'\n';
}
}
return 0;
}