Pagini recente » Cod sursa (job #2544920) | Cod sursa (job #380392) | Cod sursa (job #960126) | Cod sursa (job #66384) | Cod sursa (job #1939672)
#include<fstream>
using namespace std;
long long n,m,v[100001],y,x;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int f0(long long x)
{int st=1,dr=n,mij=(n+1)/2;
while((v[mij]!=x||v[mij+1]<=x)&&st<=dr)
{if(v[mij]<=x)
st=mij+1;
else
dr=mij-1;
mij=(st+dr)/2;
}
if(v[mij]==x)
return mij;
else
return -1;
}
int f1(long long x)
{int st=1,dr=n,mij=(n+1)/2;
while((v[mij]!=x||v[mij+1]<=x)&&st<=dr)
{if(v[mij]<=x)
st=mij+1;
else
dr=mij-1;
mij=(st+dr)/2;
}
return mij;
}
int f2(long long x)
{int st=1,dr=n,mij=(n+1)/2;
while((v[mij]!=x||v[mij-1]>=x)&&st<=dr)
{if(v[mij]<x)
st=mij+1;
else
dr=mij-1;
mij=(st+dr)/2;
}
if(v[mij]<x)
return mij+1;
else
return mij;
}
int main()
{f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
f>>m;
for(int i=1;i<=m;i++)
{f>>y>>x;
switch(y)
{case 0:{g<<f0(x);break;}
case 1:{g<<f1(x);break;}
case 2:{g<<f2(x);break;}
}
g<<'\n';
}
return 0;
}