Pagini recente » Cod sursa (job #689433) | Cod sursa (job #1617855) | Cod sursa (job #360568) | Cod sursa (job #1198642) | Cod sursa (job #2513289)
#include <stdio.h>
#define NMAX 100000
using namespace std;
int n;
int v[NMAX+3];
FILE *fin,*fout;
int caut_bin_t0(int nr)
{
int st=1;
int dr=n;
int ok=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]<=nr)
{
if(v[mij]==nr)
{
ok=mij;
}
st=mij+1;
}
else
{
dr=mij-1;
}
}
return ok;
}
int caut_bin_1(int nr)
{
int st=1,dr=n,sol=0;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]<=nr)
{
sol=mij;
st=mij+1;
}
else
{
dr=mij-1;
}
}
return sol;
}
int caut_b_2(int nr)
{
int st=1,dr=n,sol=0;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]>=nr)
{
//caut in stanga
sol=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
return sol;
}
int main()
{
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
fscanf(fin,"%d",&n);
for(int i=1; i<=n; i++)
{
fscanf(fin,"%d",&v[i]);
}
int m;
fscanf(fin,"%d",&m);
for(int i=1; i<=m; i++)
{
int tip,numar,solutie=0;
fscanf(fin,"%d %d",&tip,&numar);
if(tip==0)
{
//vad daca il regasesc in sir
solutie=caut_bin_t0(numar);
}
else if(tip==1)
{
solutie=caut_bin_1(numar);
}
else if(tip==2)
{
solutie=caut_b_2(numar);
}
fprintf(fout,"%d\n",solutie);
}
return 0;
}