Pagini recente » Cod sursa (job #6175) | Cod sursa (job #426123) | Cod sursa (job #1314797) | Cod sursa (job #1293184) | Cod sursa (job #1836737)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int i,j,s,d,n,k,t,p,r;
int* v;
int bin1(int s,int d,int* v,int x)
{
int m,t=-1;
while(s<d)
{
m=(s+d)/2;
if(v[m]==x && m>t)
t=m;
if(v[m]>x)
{
d=m;
}
else
if(v[m]<=x)
{
s=m+1;
}
}
return t;
}
int bin2(int s,int d,int* v,int x)
{
int m,t=-1;
while(s<d)
{
m=(s+d)/2;
if(v[m]<=x && m>t)
t=m;
if(v[m]>x)
{
d=m;
}
else
if(v[m]<=x)
{
s=m+1;
}
}
return t;
}
int bin3(int s,int d,int* v,int x)
{
int m,t;
t=d;
while(s<d)
{
m=(s+d)/2;
if(v[m]>=x && m<t)
t=m;
if(v[m]>=x)
d=m;
else
s=m+1;
}
return t;
}
int main()
{
f>>n;
v=new int[n+4];
for(i=1;i<=n;i++)
f>>v[i];
f>>r;
while(r!=0)
{
f>>i>>j;
if(i==0)
{
g<<bin1(1,n,v,j)<<endl;
}
else
if(i==1)
{
g<<bin2(1,n,v,j)<<endl;
}
else
if(i==2)
{
g<<bin3(1,n,v,j)<<endl;
}
r--;
}
}