Pagini recente » Cod sursa (job #259371) | Cod sursa (job #3000695) | Cod sursa (job #2567704) | Cod sursa (job #1309882) | Cod sursa (job #1987998)
// cautbin.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <fstream>
#define MAXN 10005
#define MAX(a,b) ( (a) > (b) ? (a) : (b))
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int N, M, v[MAXN],mid,st,dr,a,nr;
//void cit() {
// in >> N;
// for (int i = 1; i <= N; i++) {
// in >> v[i];
// }
//
//}
//int cautbin_0(int nr) {
// int mid, st = 1, dr = N;
// while (st <= dr) {
//
// mid = (st + dr) / 2;
// if (v[mid] > nr) {
// dr = mid - 1;
// }
// else if (v[mid] <= nr) {
// st = mid + 1;
// }
// }
// mid = (st + dr) / 2;
// if (v[dr] == nr) {
// return dr;
// }
// else {
// return -1;
// }
//}
//int cautbin_1(int nr) {
// int mid, st = 1, dr = N;
// while (st <= dr) {
//
// mid = (st + dr) / 2;
// if (v[mid] > nr) {
// dr = mid - 1;
// }
// else if (v[mid] <= nr) {
// st = mid + 1;
// }
// }
// mid = (st + dr) / 2;
// return dr;
//
//}
//int cautbin_2(int nr) {
// int mid, st = 1, dr = N;
// while (st <= dr) {
//
// mid = (st + dr) / 2;
// if (v[mid] >= nr) {
// dr = mid - 1;
// }
// else if (v[mid] < nr) {
// st = mid + 1;
// }
// }
// mid = (st + dr) / 2;
// return st;
//}
int main()
{
in >> N;
for (int i = 1; i <= N; i++) {
in >> v[i];
}
in >> M;
for (int i = 1; i <= M; i++) {
in >> a >> nr;
if (a == 0) {
mid, st = 1, dr = N;
while (st <= dr) {
mid = (st + dr) / 2;
if (v[mid] > nr) {
dr = mid - 1;
}
else if (v[mid] <= nr) {
st = mid + 1;
}
}
mid = (st + dr) / 2;
if (v[dr] == nr) {
out<< dr <<"\n";
}
else {
out<<-1<<"\n";
}
}
else if (a == 1) {
mid, st = 1, dr = N;
while (st <= dr) {
mid = (st + dr) / 2;
if (v[mid] > nr) {
dr = mid - 1;
}
else if (v[mid] <= nr) {
st = mid + 1;
}
}
mid = (st + dr) / 2;
out<< dr<<"\n";
}
else if(a == 2) {
mid, st = 1, dr = N;
while (st <= dr) {
mid = (st + dr) / 2;
if (v[mid] >= nr) {
dr = mid - 1;
}
else if (v[mid] < nr) {
st = mid + 1;
}
}
mid = (st + dr) / 2;
out<< st<<"\n";
}
}
return 0;
}