Pagini recente » Cod sursa (job #352079) | Cod sursa (job #817464) | Cod sursa (job #2127989) | Cod sursa (job #1038740) | Cod sursa (job #594889)
Cod sursa(job #594889)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001],N;
int caut0 (int x)
{
int i,pas=(1<<30);
for(i=0;pas!=0;pas/=2)
{
if(i+pas<=N && v[i+pas]<=x)
i+=pas;
}
if(v[i]!=x) return -1;
return i;
}
int caut1 (int x)
{
int i,pas=(1<<30);
for(i=0;pas!=0;pas/=2)
{
if(i+pas<=N && v[i+pas]<=x)
i+=pas;
}
return i;
}
int caut2 (int x)
{
int i,pas=(1<<30);
for(i=0;pas!=0;pas/=2)
{
if(i+pas<=N && v[i+pas]<x)
i+=pas;
}
return i+1;
}
int main()
{
int i,M,caut,x;
f>>N;
for(i=1;i<=N;i++) f>>v[i];
f>>M;
for(i=1;i<=M;i++)
{
f>>caut>>x;
if(caut==0) g<<caut0(x)<<"\n";
if(caut==1) g<<caut1(x)<<"\n";
if(caut==2) g<<caut2(x)<<"\n";
}
}