U nizu celih brojeva, pronaći dužinu najdužeg intervala takvog da počinje i završava se brojevima koji su jednaki po apsolutnoj vrednosti, ali suprotnog znaka.
Sa standradnog ulaza se učitava pozitivan ceo broj \(n\) (\(2 \leq n \leq 10000\)), a zatim i \(n\) celih brojeva koji čine dati niz.
Na standardni izlaz ispisati dužinu najdužeg intervala koji zadovoljava uslov zadatka.
8 -3 2 4 3 1 -2 -1 -4
6
U ovom bloku se opisuje glavno rešenje zadatka.
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n; cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++){
cin >> a[i];
}
unordered_map<int, int> seen;
int max_len = 0;
for (int i = 0; i < n; i++) {
if(seen.find(-a[i]) != seen.end()) {
max_len = max(max_len, i - seen[-a[i]] + 1);
}
if (seen.find(a[i]) == seen.end()) {
seen[a[i]] = i;
}
}
cout << max_len << endl;
return 0;
}#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n; cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int max_len = 0;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (a[i] == -a[j]) {
max_len = max(max_len, j - i + 1);
}
}
}
cout << max_len << endl;
return 0;
}