Pagini recente » Istoria paginii runda/simulare.well/clasament | Cod sursa (job #3239772) | Cod sursa (job #598749) | Cod sursa (job #1486766) | Cod sursa (job #486846)
Cod sursa(job #486846)
#include <fstream>
using namespace std;
const char InFile[]="cautbin.in";
const char OutFile[]="cautbin.out";
const int MaxN=100010;
ifstream fin(InFile);
ofstream fout(OutFile);
int v[MaxN],n,m,op,x;
int cauta_egal(int x)
{
int u=n;
int p=1;
int m;
while(p<=u)
{
m=p+(u-p)/2;
if(x<v[m])
{
u=m-1;
}
else if(v[m]<=x)
{
p=m+1;
}
}
if(u<=n && v[u]==x)
{
return u;
}
return -1;
}
int cauta_maimic_egal(int x)
{
int u=n;
int p=1;
int m;
while(p<=u)
{
m=p+(u-p)/2;
if(x<v[m])
{
u=m-1;
}
else if(v[m]<=x)
{
p=m+1;
}
}
return u;
}
int cauta_maimare_egal(int x)
{
int u=n;
int p=1;
int m;
while(p<=u)
{
m=p+(u-p)/2;
if(x<=v[m])
{
u=m-1;
}
else if(v[m]<x)
{
p=m+1;
}
}
return p;
}
int main()
{
fin>>n;
for(register int i=1;i<=n;++i)
{
fin>>v[i];
}
fin>>m;
for(register int j=1;j<=m;++j)
{
fin>>op>>x;
if(op==0)
{
fout<<cauta_egal(x);
}
else if(op==1)
{
fout<<cauta_maimic_egal(x);
}
else
{
fout<<cauta_maimare_egal(x);
}
fout<<"\n";
}
fin.close();
fout.close();
return 0;
}