Dat je niz celih brojeva. Za svaki od upita oblika \(a\ b\) ispisati najmanji i najveći broj iz intervala \([a, b]\) koji pripada nizu.
Sa standardnog ulaza se učitava veličina niza \(n\) (\(1 \leq n \leq 10^6\)), a zatim i \(n\) elemenata niza. Nakon toga se učitava broj \(k\) (\(1 \leq k \leq 10^4\)), a zatim i \(k\) upita oblika \(a\ b\).
Za svaki od upita na standardni izlaz ispisati najmanji i najveći
broj iz datog intervala koji pripada nizu. Ukoliko intervalu pripada
samo jedan broj iz niza, ispisati njega dvaput. Ukoliko intervalu ne
pripada ni jedan broj iz niza, ispisati NEMA
.
5 4 -2 3 1 -4 3 1 5 -3 0 5 7
1 4 -2 -2 NEMA
U ovom bloku se opisuje glavno rešenje zadatka.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n; cin >> n;
<int> v(n);
vectorfor (int i = 0; i < n; i++) {
>> v[i];
cin }
(v.begin(), v.end());
sort
int k; cin >> k;
while (k--) {
int a, b; cin >> a >> b;
auto it_min = lower_bound(v.begin(), v.end(), a);
auto it_max = upper_bound(v.begin(), v.end(), b) - 1;
if (it_max < it_min){
<< "NEMA" << endl;
cout } else {
<< *it_min << " " << *it_max << endl;
cout }
}
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
#include <limits>
using namespace std;
int main()
{
int n; cin >> n;
<int> v(n);
vectorfor(int i = 0; i < n; i++) {
>> v[i];
cin }
int k; cin >> k;
while (k--) {
int a, b; cin >> a >> b;
int m = numeric_limits<int>::max(), M = numeric_limits<int>::min();
for (int i = 0; i < n; i++) {
if (a <= v[i] && v[i] <= b) {
= min(m, v[i]);
m = max(M, v[i]);
M }
}
if (m != numeric_limits<int>::max() && M != numeric_limits<int>::min()) {
<< m << " " << M << endl;
cout } else {
<< "NEMA" << endl;
cout }
}
return 0;
}