Pagini recente » Cod sursa (job #2684870) | Cod sursa (job #761107) | Cod sursa (job #3247976) | Cod sursa (job #2760866) | Cod sursa (job #333603)
Cod sursa(job #333603)
#include <fstream>
#define Nmax 100010
using namespace std;
ifstream in;
ofstream out;
int N, A[Nmax],i,M,op,b;
long op0(int st,int dr) {
if (st==dr) {if (A[st-1]==A[b]) return st; else return -1; }
int mij=st+(dr-st)/2;
if (A[mij]<=A[b]) return op0(mij+1,dr); else
return op0(st,mij);
}
long op1(int st,int dr) {
if (st==dr) {if (A[st-1]<=A[b]) return st; else return -1; }
int mij=st+(dr-st)/2;
if (A[mij]<=A[b]) return op1(mij+1,dr); else
return op1(st,mij);
}
long op2(int st,int dr) {
if (st==dr) {if (A[st]>=A[b]) return st+1; else return -1; }
int mij=st+(dr-st)/2;
if (A[mij]<A[b]) return op2(mij+1,dr); else
return op2(st,mij);
}
int main() {
in.open("cautbin.in");
out.open("cautbin.out");
in >> N;
for (i=0;i<N;i++)
{
in >> A[i];
}
in >> M;
for (i=0;i<M;i++) {
in >> op >> b;
switch (op) {
case 0:out << op0(1,N) << "\n";
break;
case 1:out << op1(1,N) << "\n";
break;
case 2:out << op2(1,N) << "\n";
break;
}
}
return 0;
}