Pagini recente » Cod sursa (job #3170266) | Cod sursa (job #1471169) | Cod sursa (job #999463) | Cod sursa (job #634794) | Cod sursa (job #779294)
Cod sursa(job #779294)
#include<cstdio>
using namespace std;
FILE *f,*g;
int i,n,a,b,m,mij,ls,ld,x,v[100001];
int main()
{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);
for(i=1;i<=m;++i)
{fscanf(f,"%d%d",&b,&a);
if(b==0)
{ls=1; ld=n; x=-1;
mij=ls+(ld-ls)/2;
while(ls<=ld)
{if(a<v[mij])
ld=mij-1;
else
if(a>v[mij])
ls=mij+1;
else
if(a==v[mij])
{x=mij;
break;
}
mij=ls+(ld-ls)/2;
}
if(x>=0)
{while(v[x+1]==v[x])
++x;
fprintf(g,"%d\n",x);
}}
else
if(b==1)
{ls=1; ld=n; x=-1;
mij=ls+(ld-ls)/2;
while(ls<=ld)
{if(a<v[mij])
ls=mij-1;
else
if(a>v[mij])
ld=mij+1;
else
if(a==v[mij])
{x=mij;
break;
}
mij=ls+(ld-ls)/2;
}
if(x>=0)
{while(v[x+1]==v[x])
++x;
fprintf(g,"%d\n",x);
}
else
{if(v[ls]>x)
{while(v[ls-1]>=x)
--ls;
ls=ls-1;
fprintf(g,"%d\n",ls);
}
else
{while(v[ls+1]<=x)
++ls;
fprintf(g,"%d\n",ls);
}}}
else
if(b==2)
{ls=1; ld=n; x=-1;
mij=ls+(ld-ls)/2;
while(ls<=ld)
{if(a<v[mij])
ls=mij-1;
else
if(a>v[mij])
ld=mij+1;
else
if(a==v[mij])
{x=mij;
break;
}
mij=ls+(ld-ls)/2;
}
if(x>=0)
{while(v[x-1]==v[x])
--x;
fprintf(g,"%d\n",x);
}
else
{if(v[ls]>x)
{while(v[ls-1]>=x)
--ls;
fprintf(g,"%d\n",ls);
}
else
{while(v[ls+1]<=x)
++ls;
ls=ls+1;
fprintf(g,"%d\n",ls);
}}}
}
return 0;
}