Pagini recente » Cod sursa (job #2161425) | Cod sursa (job #2632627) | Cod sursa (job #3155982) | Cod sursa (job #3140973) | Cod sursa (job #1788236)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n, m;
vector<int> v;
void rez0(int x)
{
int st = 1;
int dr = n;
int rasp = -1;
int mid;
while(st <= dr)
{
mid = (st + dr) / 2;
if(v[mid] <= x)
{
rasp = mid;
st = mid + 1;
}
else
dr = mid - 1;
}
if(v[mid] == x) out << rasp << "\n";
else out << -1 << "\n";
}
void rez1(int x)
{
int st = 1;
int dr = n;
int rasp;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(v[mid] <= x)
{
rasp = mid;
st = mid + 1;
}
else
dr = mid - 1;
}
out << rasp << "\n";
}
void rez2(int x)
{
int st = 1;
int dr = n;
int rasp;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(v[mid] >= x)
{
rasp = mid;
dr = mid - 1;
}
else
st = mid + 1;
}
out << rasp << "\n";
}
int main()
{
in >> n;
v.resize(n + 1);
for(int i = 1; i <= n; ++i)
in >> v[i];
in >> m;
int tip, x;
for(int i = 1; i <= m; ++i)
{
in >> tip >> x;
if(tip == 0)
{
rez0(x);
}
else if(tip == 1)
{
rez1(x);
}
else if(tip == 2)
{
rez2(x);
}
}
return 0;
}