Pagini recente » Cod sursa (job #1313666) | Cod sursa (job #313018) | Cod sursa (job #3192806) | Cod sursa (job #2262516) | Cod sursa (job #332855)
Cod sursa(job #332855)
#include<fstream.h>
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,m,v[100000];
int cautbin(int nr)
{
int st=1,dr=n,mid,gasit=0;
do{
mid=st+(nr-st)/2;
if(v[mid]==nr)
return mid;
else if(v[mid]<nr)
st=mid+1;
else dr=mid-1;
}
while(st<=dr && !gasit);
return 0;
}
int c1(int poz,int x)
{
int l=poz;
while(v[l]==x && l<=n)
l++;
return l-1;
}
void main()
{ int i,ef,x,poz,l;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in>>m;
for(i=1;i<=m;i++)
{
in>>ef>>x;
l=cautbin(x);
if(ef==0)
if(l==0)
out<<"-1 \n";
else
out<<c1(l,x)<<"\n";
else if(ef==1)
{
while(!cautbin(x))
x--;
poz=cautbin(x);
out<<c1(poz,x)<<"\n";
}
else if(l)
out<<l<<"\n";
else out<<(c1(l,x)+1)<<"\n";
}
in.close();
out.close();
}