Pagini recente » Cod sursa (job #2794223) | Cod sursa (job #2221277) | Cod sursa (job #1877460) | Cod sursa (job #2350940) | Cod sursa (job #786578)
Cod sursa(job #786578)
#include <stdio.h>
#include <stdlib.h>
#define K 16
#define W 100000
unsigned int v[W];
int cautb0 (unsigned int x,unsigned int n)
{
int i=0,pas=1<<K;
while (pas!=0)
{
if (i+pas<n&&v[i+pas]<=x)
i+=pas;
pas/=2;
}
if(v[i] == x)
return i;
else
return -2;
}
int cautb1 (unsigned int x,unsigned int n)
{
int i=0,pas=1<<K;
while (pas!=0)
{
if (i+pas<n&&v[i+pas]<=x)
i+=pas;
pas/=2;
}
return i;
}
int cautb2 (unsigned int x, unsigned int n)
{
int i=0,pas=1<<K;
while (pas!=0)
{
if (i+pas<n&&v[i+pas]<x)
i+=pas;
pas/=2;
}
return 1+i;
}
int main()
{
FILE * fin, *fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
unsigned int n,i,nri,intrebare,x;
int d;
fscanf(fin,"%u",&n);
for (i=0; i<n; i++)
{
fscanf(fin,"%u",&v[i]);
}
fscanf(fin,"%u",&nri);
for (i=1; i<=nri; i++)
{
fscanf(fin,"%u",&intrebare);
fscanf(fin,"%u",&x);
if (intrebare==0)
d=cautb0(x,n);
if (intrebare==1)
d=cautb1(x,n);
if (intrebare==2)
d=cautb2(x,n);
fprintf (fout,"%d\n",d + 1);
}
fclose(fin);
fclose(fout);
return 0;
}