Pagini recente » Cod sursa (job #1350197) | Cod sursa (job #1715519) | Cod sursa (job #1391614) | Cod sursa (job #738250) | Cod sursa (job #2272441)
#include <iostream>
#include <fstream>
#include <algorithm>
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 (st!=dr && st!=mij && dr!=mij) {
if (v[mij]<=x)
st=mij;
else
dr=mij;
mij=(st+dr)/2;
}
if (v[st]==x)
out[j]=mij;
else
out[j]=-1;
}
if (op==1) {
while (st!=dr && st!=mij && dr!=mij ) {
if (v[mij]<=x)
st=mij;
else
dr=mij;
mij=(st+dr)/2;
}
out[j]= mij;
}
if (op==2) {
while (st!=dr && st!=mij && dr!=mij) {
if (v[mij]>=x)
dr=mij;
else
st=mij;
mij=(st+dr)/2;
}
if (v[dr]==x && v[st]!=x)
out[j]=dr;
else
out[j]=mij;
}
}
for (j=1;j<=t;j++)
fout << out[j]<<endl;
fin.close();
fout.close();
return 0;
}