Pagini recente » Cod sursa (job #71161) | Cod sursa (job #2323053) | Cod sursa (job #1426532) | Cod sursa (job #1301290) | Cod sursa (job #1027136)
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int V[100];
int intrebare1(int st, int dr, int x)
{
int mid,i;
while(dr-st>1)
{
mid=st+(dr-st)/2;
if(x==V[mid])
{
for(i=mid; i<=dr; i++)
if(x!=V[i]) break;
return i-1;
}
else
{
if(x<V[mid])
dr=mid-1;
else
st=mid+1;}
}
if(x==V[dr])
return dr;
else
return st;
if(x!=V[dr] && x!=V[st])
return -1;
}
int intrebare2(int st, int dr, int x)
{
int mid,i;
while(dr-st>1)
{
mid=st+(dr-st)/2;
if(x==V[mid])
{
for(i=mid; i<=dr; i++)
if(x<V[i]) break;
return i-1;
}
else
{
if(x<V[mid])
dr=mid-1;
else
st=mid+1;
}
}
if(x==V[dr])
return dr;
else
return st;
}
int intrebare3(int st, int dr, int x)
{
int mid,i;
while(dr-st>1)
{
mid=st+(dr-st)/2;
if(x==V[mid])
{
for(i=mid; i>=st; i--)
if(x>V[i]) break;
return i+1;
}
else
{
if(x<V[mid])
dr=mid-1;
else
st=mid+1;
}
}
if(x==V[dr])
return dr;
else
return st;
}
int main()
{
int n,i,m,a,b;
in>>n;
for(i=1; i<=n; i++)
in>>V[i];
in>>m;
for(i=1; i<=m; i++)
{
in>>a>>b;
if(a==0)
out<<intrebare1(1, n, b)<<"\n";
if(a==1)
out<<intrebare2(1, n, b)<<"\n";
if(a==2)
out<<intrebare3(1, n, b)<<"\n";
}
}