Pagini recente » Cod sursa (job #198026) | Cod sursa (job #1605108) | Cod sursa (job #3220060) | Cod sursa (job #2356926) | Cod sursa (job #1788228)
#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;
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 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;
}