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;
<int> a(n);
vectorfor (int i = 0; i < n; i++){
>> a[i];
cin }
<int, int> seen;
unordered_map
int max_len = 0;
for (int i = 0; i < n; i++) {
if(seen.find(-a[i]) != seen.end()) {
= max(max_len, i - seen[-a[i]] + 1);
max_len }
if (seen.find(a[i]) == seen.end()) {
[a[i]] = i;
seen}
}
<< max_len << endl;
cout
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n; cin >> n;
<int> a(n);
vectorfor (int i = 0; i < n; i++) {
>> a[i];
cin }
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(max_len, j - i + 1);
max_len }
}
}
<< max_len << endl;
cout
return 0;
}