Pagini recente » Cod sursa (job #2530535) | Cod sursa (job #2824179) | Cod sursa (job #565208) | Cod sursa (job #2625001) | Cod sursa (job #1330722)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,sir[100000],i,j,qst,x;
int question0 (int x)
{
int left=1,right=n,mid;
while (left<right)
{
mid=(left+right)/2;
if(sir[m]<=x) left=mid+1;
else right=mid;
}
mid=(left+right)/2;
if(sir[mid]>x)
-- mid;
if(sir[mid]==x)return mid;
return -1;
}
int question1 (int x)
{
int left=1,right=n,mid;
while (left<right)
{
mid=(left+right)/2;
if(sir[m]<=x) left=mid+1;
else right=mid;
}
mid=(left+right)/2;
if(sir[mid]>x)
-- mid;
return mid;
}
int question2 (int x)
{
int left=1,right=n,mid;
while (left<right)
{
mid=(left+right)/2;
if(sir[m]<x) left=mid+1;
else right=mid;
}
mid=(left+right)/2;
if(sir[mid]<x)
++ mid;
return mid;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)f>>sir[i];
f>>m;
for(j=1;j<=m;j++)
{
f>>qst>>x;
if(qst==0)
g<<question0(x)<<'\n';
if(qst==1)
g<<question1(x)<<'\n';
if(qst==2)
g<<question2(x);
}
return 0;
}