Pagini recente » Cod sursa (job #1309247) | Cod sursa (job #1534705) | Cod sursa (job #2279841) | Cod sursa (job #487864) | Cod sursa (job #2282272)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main()
{
int i,n,t,j,st,dr,mij,x,op;
fin >> n;
int v[n+1];
for (i=1;i<=n;i++)
fin >> v[i];
fin >> t;
int out[t+1];
for (j=1;j<=t;j++) {
fin >> op>>x;
st=1;
dr=n;
mij=(st+dr)/2;
if (op==0) {
while (mij!=dr && st!=mij ) {
if (v[mij]<=x)
st=mij;
else
dr=mij;
mij=(st+dr)/2;
}
if (v[dr]==x)
out[j]=st;
else if (v[st]==x)
out[j]=st;
else
out[j]=-1;
}
else if (op==1) {
while (mij!=dr && st!=mij ) {
if (v[mij]<=x)
st=mij;
else
dr=mij;
mij=(st+dr)/2;
}
out[j]= st;
}
else if (op==2) {
while (mij!=dr && st!=mij) {
if (v[mij]>=x)
dr=mij;
else
st=mij;
mij=(st+dr)/2;
}
out[j]=dr;
}
}
for (j=1;j<=t;j++)
fout << out[j]<<endl;
return 0;
}