Pagini recente » Cod sursa (job #2756240) | Cod sursa (job #1103470) | Cod sursa (job #1558109) | Cod sursa (job #2901793) | Cod sursa (job #818644)
Cod sursa(job #818644)
#include<fstream> //cautare binara
using namespace std;
int v[100],x,n;
int poz(int x, int s, int d,int u)
{int mid=s+(d-s)/2;
switch (u){
case 0:
if(d-s<=1)
{if (v[mid] > x) mid--;
if (v[mid] == x)
return mid+1;
else
return -1;
}
//if(v[mid]==x) return mid;
if(v[mid]>x) return poz(x,s,mid-1,u);
else return poz(x,mid+1,d,u);
case 1:
if(d-s<=1)
{if (v[mid] > x) mid++;
return mid+1;
}
if(v[mid]>x) return poz(x,s,mid,u);
else return poz(x,mid+1,d,u);
case 2:
if(d-s<=1)
{if (v[mid] < x) mid--;
return mid-1;
}
if(v[mid]>x) return poz(x,s,mid,u);
else return poz(x,mid+1,d,u);
}
}
int main()
{int u;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(int i=0;i<n;i++)
f>>v[i];
f>>n;
for(int i=0;i<n;i++)
{
f>>u;
f>>x;
g<<poz(x,-1,n,u)+1<<endl;
}
g.close();
f.close();
return 0;
}