Pagini recente » Cod sursa (job #2680778) | Cod sursa (job #574921) | Cod sursa (job #371220) | Cod sursa (job #2038572) | Cod sursa (job #2175273)
//
// main.cpp
// Masterpiece
//
// Created by Yvonna Filip on 02/03/2018.
// Copyright © 2018 Yvonna Filip. All rights reserved.
//
#include <fstream>
#include <iostream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out("cautbin.out");
int n, m, x, v[100001],q,p;
int upperbin(int v[], int x)
{
if(x<v[1])
return -1;
int st=1;
int dr=n;
int mijl;
while(st<=dr)
{
mijl=(st+dr)/2;
if(v[mijl]<=x)
st=mijl+1;
if(v[mijl]>x)
dr=mijl-1;
}
return dr;
}
int lowerbin(int v[], int x)
{
int st=1;
int dr=n;
int mijl;
while(st<=dr)
{
mijl=(st+dr)/2;
if(v[mijl]<x)
st=mijl+1;
if(v[mijl]>=x)
dr=mijl-1;
}
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>>q>>x;
if(q==0)
{
p=upperbin(v, x);
if(p>0 && v[p]==x)
out<<p<<'\n';
else
out<<-1<<'\n';
}
if(q==1)
{
p=upperbin(v, x);
if(p>0 && v[p]<=x)
out<<p<<'\n';
}
if(q==2)
{
p=lowerbin(v, x);
if(p<=n && v[p]>=x)
out<<p<<'\n';
}
}
return 0;
}