Pagini recente » Cod sursa (job #411071) | Cod sursa (job #1548739) | Cod sursa (job #1121898) | Cod sursa (job #1834151) | Cod sursa (job #1497697)
#include<stdio.h>
FILE *fin,*fout;
int a[100001];
int n,m;
int x,y,var;
void solve0(int s,int e)
{
int me=(s+e)/2;
if(s>e)
{
return;
}
if(a[me]<y)
{
solve0(me+1,e);
}
else if(a[me]>y)
{
solve0(s,me-1);
}
else
{
var=me;
solve0(me+1,e);
}
}
void solve1(int s,int e)
{
int me=(s+e)/2;
if(s>e)
{
return;
}
if(a[me]<=y)
{
var=me;
solve1(me+1,e);
}
else
{
solve1(s,me-1);
}
}
void solve2(int s,int e)
{
int me=(s+e)/2;
if(s>e)
{
return;
}
if(a[me]<y)
{
solve2(me+1,e);
}
else
{
var=me;
solve2(s,me-1);
}
}
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",&a[i]);
}
fscanf(fin,"%d",&m);
for(int i=1;i<=m;i++)
{
fscanf(fin,"%d %d",&x,&y);
if(x==0)
{
solve0(1,n);
fprintf(fout,"%d\n",var);
}
else if(x==1)
{
solve1(1,n);
fprintf(fout,"%d\n",var);
}
else
{
solve2(1,n);
fprintf(fout,"%d\n",var);
}
}
}