Pagini recente » Cod sursa (job #1677455) | Cod sursa (job #238455) | Cod sursa (job #800903) | Cod sursa (job #469137) | Cod sursa (job #2437750)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001] , n ;
void caut0(int nr)
{
int l , r , mid , ans=0;
l=1;
r=n;
while (l<=r)
{
mid=l+(r-l)/2;
if (v[mid]==nr && mid>ans)
ans=mid;
if ( v[mid]>nr )
{
r=mid-1;
}
else
l=mid+1;
}
if (v[ans]==nr)
out<<ans<<'\n';
else
out<<-1<<'\n';
}
void caut1(int nr)
{
int l , r , mid , ans=0;
l=1;
r=n;
while (l<=r)
{
mid=l+(r-l)/2;
if (v[mid]<=nr && mid>ans)
ans=mid;
if ( v[mid]>nr )
{
r=mid-1;
}
else
l=mid+1;
}
out<<ans<<'\n';
}
void caut2 (int nr)
{
int l , r , mid , ans=9999;
l=1;
r=n;
while (l<=r)
{
mid=l+(r-l)/2;
if (v[mid]>=nr && mid<=ans)
ans=mid;
if ( v[mid]>=nr )
{
r=mid-1;
}
else
l=mid+1;
}
out<<ans<<'\n';
}
int main()
{
int 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)
caut0(b);
if(a==1)
caut1(b);
else
if (a==2)
caut2(b);
}
return 0;
}