Pagini recente » Cod sursa (job #722944) | Cod sursa (job #1532776) | Cod sursa (job #454779) | Cod sursa (job #1155876) | Cod sursa (job #514640)
Cod sursa(job #514640)
#include <stdio.h>
FILE *f,*g;
int n,m,v[100001];
int search0(int a)
{int u,p,mij,poz=-1;
p=1; u=n;
while(p<=u)
{mij=(p+u)/2;
if(v[mij]==a)
{poz=mij;
while(poz+1<=n && a==v[poz+1])
poz++;
}
else if(v[mij]>a)
u=mij-1;
else if(v[mij]<a)
p=mij+1;
}
return poz;
}
int search1(int a)
{int u,p,mij,poz=-1;
p=1; u=n;
while(p<=u)
{mij=(p+u)/2;
if(v[mij]<=a)
{poz=mij;
p=mij+1;
}
else if(v[mij]>a)
u=mij-1;
}
return poz;
}
int search2(int a)
{int p,u,mij,poz;
p=1; u=n;
while(p<=u)
{mij=(p+u)/2;
if(v[mij]>=a)
{poz=mij;
u=mij-1;
}
else if(v[mij]<a)
p=mij+1;
}
return poz;
}
int main()
{int i,j;
f=fopen("cautbin.in","r");
g=fopen("cautbin.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&m);
int q;
int t;
int r;
for(i=1;i<=m;i++)
{fscanf(f,"%d %d",&t,&q);
if (t==0) r=search0(q);
else if(t==1) r=search1(q);
else r=search2(q);
fprintf(g,"%d\n",r);
}
fclose(f);
fclose(g);
return 0;
}