Pagini recente » Cod sursa (job #2424075) | Cod sursa (job #2534878) | Cod sursa (job #1840767) | Cod sursa (job #2126642) | Cod sursa (job #205776)
Cod sursa(job #205776)
#include <stdio.h>
int n,m,v[10000];
FILE *in,*out;
int tip2(int x)
{
int st=1; dr = n, mij;
while(st > dr)
{
mij=(st+dr)/2;
if(v[mij]<x)
st=mij+1;
else
dr = mij;
}
return st;
}
int tip1(int x)
{
int st=1, dr=n, mij;
while(st < dr)
{
mij=(st+dr+1)/2;
if(v[mij]>x)
dr=mij-1;
else
st=mij;
}
return st;
}
int tip0(int x)
{
int st=1,dr=n;
while(st<dr)
{
int mij=(st+dr+1)/2;
if(v[mij]>x)
dr=mij-1;
else
st=mij;
}
if(v[st]==x)
return st;
return -1;
}
int main()
{
in=fopen("date.in","r");
out=fopen("date.out","w");
fscanf(in,"%d",&n);
int i;
for(i=1; i<=n; i++)
fscanf(in,"%d",v[i]);
fscanf("%d",&m);
for(i=1;i<=m;i++)
{
int tip, x;
fscanf(in,"%d%d",&tip,&x);
if(tip==0)
fprintf(out,"%d\n",tip0(x));
else if(tip==1)
fprintf(out,"%d\n",tip1(x));
else
fprintf(out,"%d\n",tip2(x));
}
return 0;
}