Pagini recente » Cod sursa (job #105094) | Cod sursa (job #1057640) | Cod sursa (job #855372) | Istoria paginii utilizator/balazstasi | Cod sursa (job #2282279)
#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)
fout <<dr<<endl;
else if (v[st]==x)
fout<<st<<endl;
else
fout<<-1<<endl;
}
else if (op==1) {
while (mij!=dr && st!=mij ) {
if (v[mij]<=x)
st=mij;
else
dr=mij;
mij=(st+dr)/2;
}
if (v[st]<=x)
fout<<st<<endl;
else
fout <<dr<<endl;
}
else if (op==2) {
while (mij!=dr && st!=mij) {
if (v[mij]>=x)
dr=mij;
else
st=mij;
mij=(st+dr)/2;
}
if (v[dr]>=x)
fout <<dr<<endl;
else
fout<<st<<endl;
}
}
return 0;
}