Pagini recente » Cod sursa (job #584765) | Cod sursa (job #2687150) | Cod sursa (job #961547) | Istoria paginii runda/simulare.wellspecial2/clasament | Cod sursa (job #1022769)
#include<iostream>
#include<fstream>
using namespace std;
int v[1000];
int binary_search0(int x, int left, int right)
{
int m;
if(left<=right)
{
m=left+(-left+right)/2;
if (v[m]<=x)
return binary_search0(x, m+1, right);
else
return binary_search0(x, left,m-1);}
if(v[right]==x)
return right+1;
if(v[m]>x)
return right;
return -1;
}
int binary_search1(int x, int left, int right )
{
int m;
if(left<right)
{
m=left+(-left+right)/2;
if(v[m]<=x)
return binary_search1(x,m+1,right);
else
return binary_search1(x,left,m);
}
if(v[right]>x)
return right;
else
return right+1;
}
int binary_search2(int x, int left, int right)
{
int m;
if(left<right)
{
m=left+(-left+right)/2;
if(v[m]<x)
return binary_search2(x,m+1,right);
else
return binary_search2(x,left,m);
}
if(v[right]<x)
return right+2;
else
return right+1;
}
int main()
{
int n,i,m,x,y;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(i=0;i<n;i++)
f>>v[i];
f>>m;
for(i=0;i<m;i++)
{
f>>x>>y;
if(x==0)
g<<binary_search0(y,0,n-1);
if(x==1)
g<<binary_search1(y,0,n-1);
if(x==2)
g<<binary_search2(y,0,n-1);
g<<"\n";
}
}