Numero di Array Unici

Dato n array, ciascuno di lunghezza l (ovvero l interi), si richiede di calcolare quanti di questi array sono unici. Due array si considerano unici se differiscono almeno in un elemento.
Tuttavia, confrontare gli array uno a uno potrebbe richiedere troppo tempo. Un approccio alternativo consiste nell’applicare una funzione di hash (a scelta) a ogni array e poi confrontare i valori hash.
Dopo aver calcolato l’hash di un array, è possibile prendere un grande array di dimensione m e inizializzarlo a zero. Ogni volta che si ricava un hash, si “segna” (imposta a 1) la posizione corrispondente in questo grande array. Al termine, per scoprire quanti array diversi si sono incontrati, sarà sufficiente contare i valori pari a 1 in quest’ultimo array.
È importante notare che la funzione di hash deve essere utilizzata in modulo m, così che gli indici rientrino nell’intervallo [0; m).

Dati in Ingresso

La prima riga dell’input contiene due interi n (1 ≤ n ≤ 1000) e l (1 ≤ l ≤ 1000).
Le successive n righe contengono l interi separati da uno spazio (0 ≤ ).

Risultato

Il programma deve stampare il numero di array unici.

Esempi

Input
Output
4 3 1 2 3 3 2 1 2 5 3 3 2 1
3
2 3 1 2 3 4 1 2 3 4
1
Suggerimento
Se la funzione di hash non è abbastanza efficace e si verificano ancora collisioni, prova a confrontare i risultati ottenuti con 2 funzioni di hash diverse: in questo modo l’algoritmo risulta due volte più robusto alle collisioni.
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue