Algorytm zliczania sposobów wyboru elementów

0

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;
}
 
0

scanf("%d%d", &n, &m);?

0

wczytuje m i n to takie dziwne, czy co?

0

Em, już nic, mój błąd - zaintrygował mnie brak spacji między %d, ale zdałem sobie właśnie sprawę, że to nie ma znaczenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1