Pagini recente » Cod sursa (job #1980708) | Cod sursa (job #257294) | Cod sursa (job #2084416) | Cod sursa (job #824617) | Cod sursa (job #2538353)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out ("cautbin.out");
int v[100001];
int main()
{
int n,m,i,p,x,j,st,dr,mid,mid2,contor=0;
in>>n;
for(i=1; i<=n; i++)
{
in>>v[i];
}
in>>m;
for(j=1; j<=m; j++)
{
in>>p>>x;
st=1;
dr=n;
if(p==0)
{
while(st<=dr && contor<n)
{
mid=(st+dr)/2;
if(v[mid]>x)
{
dr=mid;
}
else if(v[mid]<x)
{
st=mid+1;
}
else if(v[mid]==x)
break;
contor++;
}
while(v[mid+1]==x)
{
mid+=1;
}
if(contor==n)
out<<-1<<'\n';
else
out<<mid<<'\n';
}
else if(p==1)
{
st=1;
dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid]>=x)
mid2=mid;
if(v[mid]<x)
st=mid+1;
else
dr=mid-1;
}
while(v[mid2+1]==x)
mid2+=1;
out<<mid2<<'\n';
}
else
{
st=1;
dr=n;
while(st<=dr && contor<n)
{
mid=(st+dr)/2;
if(v[mid]>x)
{
dr=mid;
}
else if(v[mid]<x)
{
st=mid+1;
}
else if(v[mid]==x)
break;
contor++;
}
while(v[mid2-1]==x)
mid2-=1;
out<<mid2<<'\n';
}
}
return 0;
}