Pagini recente » Cod sursa (job #3275622) | Cod sursa (job #512126) | Cod sursa (job #2062099) | Cod sursa (job #8369) | Cod sursa (job #1798696)
#include <stdio.h>
#include <stdlib.h>
int v[10000],n;
inline int f1(int x,int pas)
{
int r=-1;
while(pas>0)
{
if(r+pas<n && r+pas>=0 && v[r+pas]<=x)
r+=pas;
pas/=2;
}
if(v[r]<x)
return -1;
return r+1;
}
inline int f2(int x,int pas)
{
int r=-1;
while(pas>0)
{
if(r+pas<n && r+pas>=0 && v[r+pas]<=x)
r+=pas;
pas/=2;
}
return r+1;
}
inline int f3(int x,int pas)
{
int r=-1;
while(pas>0)
{
if(r+pas<n && r+pas>=0 && v[r+pas]<x)
r+=pas;
pas/=2;
}
return r+2;
}
int main()
{
int i,k,c,x,r,p;
FILE*fi,*fo;
fi=fopen("cautbin.in","r");
fo=fopen("cautbin.out","w");
fscanf(fi,"%d",&n);
for(i=0; i<n; i++)
{
fscanf(fi,"%d",&v[i]);
}
fscanf(fi,"%d",&k);
p=1<<16;
while(p>n)
p/=2;
for(i=0; i<k; i++)
{
fscanf(fi,"%d%d",&c,&x);
if(c==0)
r=f1(x,p);
else if(c==1) r=f2(x,p);
else r=f3(x,p);
fprintf(fo,"%d\n",r);
}
fclose(fi);
fclose(fo);
return 0;
}