Pagini recente » Cod sursa (job #688666) | Cod sursa (job #2422240) | Cod sursa (job #1224296) | Cod sursa (job #2905782) | Cod sursa (job #2266038)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
void type1(unsigned long a[], int n, int x)
{
int st = 0;
int dr = n-1;
int pos = -2;
while(st<=dr)
{
int mid = (st+dr)/2;
if(a[mid] == x)
pos = mid;
if(a[mid] <= x)
st = mid+1;
else
dr = mid-1;
}
fout << pos+1 << '\n';
}
void type2(unsigned long a[], int n, int x)
{
int st = 0;
int dr = n-1;
int pos = -2;
while(st<=dr)
{
int mid = (st+dr)/2;
if(a[mid] <= x)
{
pos = mid;
st = mid+1;
}
else
dr = mid-1;
}
fout << pos+1 << '\n';
}
void type3(unsigned long a[], int n, int x)
{
int st = 0;
int dr = n-1;
int pos = -2;
while(st<=dr)
{
int mid = (st+dr)/2;
if(a[mid] >= x)
{
pos = mid;
dr = mid-1;
}
else
st = mid+1;
}
fout << pos+1 << '\n';
}
int main()
{
int N;
fin >> N;
unsigned long *a = new unsigned long [N];
for(int i=0; i<=N-1; i++)
fin >> a[i];
int M;
fin >> M;
for(int k=1; k<=M; k++)
{
int type;
fin >> type;
int x;
fin >> x;
if(type == 0)
type1(a, N, x);
else if (type == 1)
type2(a, N, x);
else
type3(a, N, x);
}
delete a;
fin.close();
fout.close();
return 0;
}