Pagini recente » Cod sursa (job #1241327) | Cod sursa (job #2858686) | Cod sursa (job #1423381) | Cod sursa (job #686572) | Cod sursa (job #2155590)
#include <stdio.h>
using namespace std;
FILE *f,*g;
int v[100002],n;
int caut(int val)
{
int aux=-1,st,dr,mij;
st=1;
dr=n;
mij=(st+dr)/2;
while(st<=dr)
{
if(v[mij]>val)
dr=mij-1;
else
{
aux=mij;
st=mij+1;
}
mij=(st+dr)/2;
}
return aux;
}
int main()
{
int m,i,x,val,ss,nr;
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",&x,&val);
ss=caut(val);
if(x==0)
{
if(v[ss]==val)
fprintf(g,"%d\n",ss);
else
fprintf(g,"-1\n");
}
else
if(x==1)
fprintf(g,"%d\n",ss);
else
{
if(v[ss]==val)
{
while(v[ss]==val)
--ss;
fprintf(g,"%d\n",ss+1);
}
else
{
nr=v[ss];
while(v[ss]==nr)
++ss;
fprintf(g,"%d\n",ss);
}
}
}
fclose(f);
fclose(g);
return 0;
}