Pagini recente » Cod sursa (job #1213971) | Cod sursa (job #3187515) | Cod sursa (job #1351706) | Cod sursa (job #2538872) | Cod sursa (job #2067111)
#include <fstream>
using namespace std;
int N[100009],C,nr,n,m,i,mid,hi,lo,r1,aux;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>N[i];
}
f>>m;
for(i=1;i<=m;i++)
{
f>>C>>nr;
if(C==0)
{
hi=n;
lo=1;
while(nr!=N[mid])
{
mid=lo+(hi-lo)/2;
if(nr<N[mid])
{
hi=mid-1;
}
else
{
lo=mid+1;
}
}
r1=mid;
if(mid!=nr)
{
r1=-1;
}
else
{
while(N[r1]==nr)
{
if(N[r1+1]==N[r1])
r1++;
else
break;
}
}
g<<r1;
}
if(C==1)
{
hi=n;
lo=1;
while(nr!=N[mid])
{
mid=lo+(hi-lo)/2;
if(nr<N[mid])
{
hi=mid-1;
}
else
{
lo=mid+1;
}
}
r1=mid;
if(r1==mid)
{
while(N[r1]==nr)
{
if(N[r1+1]==N[r1])
r1++;
else
break;
}
}
else
{
while(N[r1]==aux)
{
if(N[r1+1]==N[r1])
r1++;
else
break;
}
}
g<<r1;
}
if(C==2)
{
hi=n;
lo=1;
while(nr!=N[mid])
{
mid=lo+(hi-lo)/2;
if(nr<N[mid])
{
hi=mid-1;
}
else
{
lo=mid+1;
}
}
r1=mid;
if(r1==mid)
{
while(N[r1]==nr)
{
if(N[r1+1]==N[r1])
r1++;
else
break;
}
}
else
{
while(N[r1]==aux)
{
if(N[r1-1]==N[r1])
r1--;
else
break;
}
}
g<<r1;
}
}
f.close();
g.close();
return 0;
}