Pagini recente » Rating Avasiloaei Ionut (ionut.avasiloaei) | Cod sursa (job #173344) | Profil M@2Te4i | Istoria paginii utilizator/zamfir10 | Cod sursa (job #2047968)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int hi,lo,v[1000000],n,m,x,intr,mid,c;
int main()
{
f>>n;
for(int i=1; i<=n; i++)
{
f>>v[i];
}
f>>m;
for(int i=1; i<=m; i++)
{
f>>intr>>x;
if(intr==0)
{
lo=1;
hi=n;
while(hi>lo)
{
mid=lo+(hi-lo)/2;
if(v[mid]==x) break;
if(v[mid]>x) hi=mid-1;
if(v[mid]<x) lo=mid+1;
}
while(v[mid+1]==x) mid++;
g<<mid<<'\n';
}
if(intr==1)
{
lo=1;
hi=n;
mid=lo+(hi-lo)/2;
while(hi>lo)
{
if(v[mid]<=x || v[mid+1]>x) {c=v[mid];break;}
if(v[mid]<=x || v[mid+1]<=x) lo=mid+1;
if(v[mid]>=x) hi=mid-1;
}
while(v[mid+1]==c) mid++;
g<<mid<<'\n';
}
if(intr==2)
{
lo=1;
hi=n;
mid=lo+(hi-lo)/2;
while(hi>lo)
{
if(v[mid]>=x || v[mid-1]<x) {c=v[mid];break;}
if(v[mid]>=x || v[mid-1]>=x) lo=mid+1;
if(v[mid]>=x) hi=mid-1;
}
while(v[mid-1]==c) mid--;
g<<mid<<'\n';
}
}
return 0;
}