Pagini recente » Cod sursa (job #2875439) | Cod sursa (job #2719103) | Cod sursa (job #1040118) | Cod sursa (job #329090) | Cod sursa (job #775846)
Cod sursa(job #775846)
#include<fstream>
using namespace std;
#define NMAX 100005
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[NMAX],n,m;
int find0(int x)
{
int p=1,u=n,gasit=0;
while (p<=u)
{
int mij=(p+u)/2;
if(a[mij]==x)p=mij+1,gasit=1;
else
if(a[mij]<x)p=mij+1;
else u=mij-1;
}
if(gasit)return (p-1);
return -1;
}
int find1(int x)
{
int p=1,u=n;
while (p<=u)
{
int mij=(p+u)/2;
if(a[mij]<=x)p=mij+1;
else u=mij-1;
}
return p-1;
}
int find2(int x)
{
int p=1,u=n;
while (p<=u)
{
int mij=(p+u)/2;
if(a[mij]>=x)u=mij-1;
else
p=mij+1;
}
return u+1;
}
int main()
{
f>>n;
for(int i=1;i<=n;++i)
f>>a[i];
f>>m;
for(int i=1;i<=m;++i)
{
int op,x;
f>>op>>x;
switch(op)
{
case 0:g<<find0(x)<<'\n';break;
case 1:g<<find1(x)<<'\n';break;
case 2:g<<find2(x)<<'\n';break;
}
}
}