Mam problem z zadaniem w załączniku, mój pomysł nie działa dla wszystkich przypadków. Mógłby mi ktoś podpowiedzieć gdzie robię błąd?
#include <stdio.h>
#include <set>
#define MAX_N 1000000
using namespace std;
set<int> WYST;
set<int>::iterator it;
int SMA[MAX_N];
int zliczOdw(int i){
int wynik=0;
WYST.insert(SMA[i]);
for(int j=i-1; j>=0; j--){
it= WYST.find(SMA[j]);
if(it == WYST.end()){
wynik++;
WYST.insert(SMA[j]);
}
else{
WYST.clear();
return wynik;
}
}
}
long long zliczSpo(int n){
long long wynik=0;
int current=0;
for(int i=0; i<n; i++){
it = WYST.find(SMA[i]);
if(it == WYST.end()){
wynik+=++current;
WYST.insert(SMA[i]);
}
else{
WYST.clear();
wynik+=zliczOdw(i);
current = 0;
i--;
}
}
return wynik;
}
int main()
{
int n, m;
//odczyt
scanf("%d%d", &n, &m);
for(int i=0; i<n; i++)
scanf("%d", &SMA[i]);
printf("%lld", zliczSpo(n));
return 0;
}