Pagini recente » Cod sursa (job #2262067) | Cod sursa (job #169777) | Cod sursa (job #829781) | Cod sursa (job #127723) | Cod sursa (job #1100161)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#define MAX 10005
int a[MAX],n;
void caut_bin(int x)
{
int st = 1;
int dr = n;
int ind=-1;
while(st<=dr) {
int mid=(st+dr)/2;
if(a[mid]==x)
ind = mid,st = mid + 1;
else if(a[mid]<x)
st = mid + 1;
else dr = mid - 1;
}
fout << ind << "\n";
}
void caut_bin1(int x)
{
int st = 1;
int dr = n;
int rez;
while(st<=dr) {
int mid=(st+dr)/2;
if(a[mid]<=x)
rez = mid, st = mid + 1;
else dr = mid - 1;
}
fout << rez << "\n";
}
void caut_bin2(int x)
{
int st = 1;
int dr = n;
int rez;
while(st<=dr) {
int mid=(st+dr)/2;
if(a[mid]>=x)
rez = mid, dr = mid - 1;
else st = mid + 1;
}
fout << rez << "\n";
}
int main()
{
int m;
fin >> n;
for(int i = 1; i<=n; i++)
fin >> a[i];
fin >> m;
for(int j = 1; j<=m; j++) {
int opt, el;
fin >> opt >> el;
if(opt == 0)
caut_bin(el);
if(opt == 1)
caut_bin1(el);
if(opt == 2)
caut_bin2(el);
}
return 0;
}