Cod sursa(job #1768274)
Utilizator | Data | 30 septembrie 2016 16:58:32 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.69 kb |
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int n;
fin>>n;
int v[n];
for (int i=0;i<n;++i)
{
fin>>v[i];
}
int b;
fin>>b;
for (int i=0;i<b;++i)
{
int a,x;
fin>>a>>x;
int s=0,d=n-1,sol;
switch (a)
{ case 0 :sol=-1;
while (s<=d)
{
int mij=(d+s)/2;
if (x>=v[mij])
{
s=mij+1;
}
else
{
if (v[mij]==x){sol=mij;break;}
else
{
d=mij-1;
}
}
}
fout<<sol<<"\n";
break;
case 1 :x--;
while (s<=d)
{
int mij=(d+s)/2;
if (x>=v[mij])
{
s=mij;
s=mij+1;
}
else
{
d=mij-1;
}
}
fout<<sol<<"\n";
break;
case 2 : x++;
while (s<=d)
{
int mij=(d+s)/2;
if (x>=v[mij])
{
s=mij+1;
}
else
{
sol=mij;
d=mij-1;
}
}
fout<<sol<<"\n";
break;
}
}
}