Mai intai trebuie sa te autentifici.
Cod sursa(job #3215653)
| Utilizator | Data | 15 martie 2024 11:15:45 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.35 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int a[100000];
int bin(int v[],int val, int n)
{
int ans = 0, st = 1, dr = n, med = 0;
while (st <= dr)
{
med = (st + dr)/2;
if (v[med] <= val)
{
st = med + 1;
ans = med;
}
else
dr = med - 1;
}
return ans;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
int m;
cin >> m;
for (int i = 1; i <= m; i++)
{
int task, x;
cin >> task >> x;
int poz = bin(a, x, n);
if (task == 0)
{
if (a[poz] == x)
cout << poz;
else
cout << "-1";
}
if (task == 1)
{
int maxx = -1;
for (int f = 1; f <= n; f++)
{
if (a[f] <= x)
maxx = max (maxx, f);
}
cout << maxx;
}
if (task == 2)
{
int minn = n;
for (int f = 1; f <= n; f++)
{
if (a[f] >= x)
minn = min (minn, f);
}
cout << minn;
}
}
return 0;
}
