Pagini recente » Cod sursa (job #58117) | Cod sursa (job #1699819) | Cod sursa (job #683126) | Cod sursa (job #50226) | Cod sursa (job #1338748)
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int s(int start,int end,int x,short v[100])
{
if(start>end)
return -1;
int mid=(start+end)/2;
if(v[mid]==x)
{
while(v[mid]==x)
mid++;
mid--;
return mid;
}
if(v[mid]>x)
return s(1,mid-1,x,v);
if(v[mid]<x)
return s(mid+1,end,x,v);
}
int d(int start,int end,int x,short v[100])
{
if(start>end)
return -1;
int mid=(start+end)/2;
if(v[mid]>=x)
{
return s(mid+1,end,x,v);
}
if(v[mid]<x)
{
while(v[mid]>=x)
mid++;
mid--;
return mid;
}
}
int q(int start,int end,int x,short v[100])
{
if(start>end)
return -1;
int mid=(start+end)/2;
if(v[mid]>x)
{
return s(1,mid-1,x,v);
}
if(v[mid]<=x)
{
while(v[mid]>x)
mid++;
mid--;
return mid;
}
}
int main()
{
int n,i,x,t,m,a;
short v[100];
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>m;
for(i=1;i<=m;i++)
{
f>>t>>x;
if(t==0)
{
g<<s(1,n,x,v)<<'\n';
}
if(t==1)
{
g<<d(1,n,x,v)<<'\n';
}
if(t==2)
{
g<<q(1,n,x,v)<<'\n';
}
}
f.close();
g.close();
return 0;
}