Cod sursa(job #3221000)
Utilizator | Data | 5 aprilie 2024 18:07:25 | |
---|---|---|---|
Problema | Cautare binara | Scor | 60 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 2.44 kb |
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N,M,i,cer,x,v[100002],p1,p2,pmijl,r;
int main()
{
fin>>N;
for(i=1; i<=N; i++)
{
fin>>v[i];
}
fin>>M;
for(i=1; i<=M; i++)
{
fin>>cer>>x;
if(cer==0)
{
p1=1;
p2=N;
r=0;
while(p1<=p2)
{
pmijl=(p1+p2)/2;
if(x==v[pmijl])
{
r=pmijl;
p1=pmijl+1;
}
else
{
if(x<v[pmijl])
{
p2=pmijl-1;
}
else
{
p1=pmijl+1;
}
}
}
if(r!=0)
{
fout<< r << "\n";
}
else
{
fout<< -1 << "\n";
}
}
if(cer==1)
{
p1=1;
p2=N;
r=0;
while(p1<=p2)
{
pmijl=(p1+p2)/2;
if(x==v[pmijl])
{
r=pmijl;
p1=pmijl+1;
}
else
{
if(x>v[pmijl])
{
p1=pmijl+1;
r=pmijl;
}
else
{
p2=pmijl-1;
}
}
}
fout<< r << "\n";
}
if(cer==2)
{
p1=1;
p2=N;
r=0;;
while(p1<=p2)
{
pmijl=(p1+p2)/2;
if(x==v[pmijl])
{
r=pmijl;
p2=pmijl-1;
}
else
{
if(x>v[pmijl])
{
p1=pmijl+1;
r=pmijl+1;
}
else
{
p2=pmijl-1;
}
}
}
fout<< r << "\n";
}
}
return 0;
}