Pagini recente » Cod sursa (job #31154) | Cod sursa (job #2358054) | Cod sursa (job #2756686) | Cod sursa (job #581607) | Cod sursa (job #2552032)
#include <iostream>
#include <fstream>
using namespace std;
long long n,i,a[999],x,y,m;
int sol0(int x)
{
int l=1;
int r=n;
int mx=-1;
while(l<=r)
{
int mid=(l+r)/2;
if(x>=a[mid]) l=mid+1;
else if(x<=a[mid]) r=mid-1;
if(x==a[mid])
if(mid>mx) mx=mid;
}
return mx;
}
int sol1(int x)
{
int l=1;
int r=n;
int mx=-1;
while(l<=r)
{
int mid=(l+r)/2;
if(x>=a[mid])
{
l=mid+1;
if(mid>mx) mx=mid;
}
if(x<a[mid]) r=mid-1;
}
return mx;
}
int sol2(int x)
{
int l=1;
int r=n;
int mn=200000;
while(l<=r)
{
int mid=(l+r)/2;
if(x>a[mid]) l=mid+1;
else if(x<=a[mid])
{
r=mid-1;
if(mid<mn) mn=mid;
}
}
return mn;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1; i<=n; i++)
fin>>a[i];
fin>>m;
for(i=1; i<=m; i++)
{
fin>>x>>y;
if(x==0)
fout<<sol0(y)<<endl;
else if(x==1)
fout<<sol1(y)<<endl;
else if(x==2)
fout<<sol2(y)<<endl;
}
}