Suma de grupos de Números

Suma de grupos de Números
Tenemos una secuencia de n (n<=10000) numeros enteros positivos, debemos particionar está secuencia en subconjuntos consecutivos de modo que la suma de cada subconjunto sea igual en todos estos subconjuntos. (2 5)(1 3 3)(7)

Solución
Este problema es una Versión simplificada del problema Shrinking Polygons. Debemos probar todas las sumas posibles y ver si se puede formar dichos subconjuntos.

Optimizaciones
Asumiendo (y en este problema es así) que la suma de todo el subconjunto es menor que 10⁶ aprox., o en otras palabras, que podamos crear un vector del tamaño de la suma, nos creamos un vector booleano donde marquemos las sumas acumuladas de la secuencia.

Secuencia = {2,5,1,3,3,7}

El vector booleano tendría marcadas las posiciones 2,7,8,11,14,21.

Primero probamos si un subconjunto de tamaño 2 o 7 u 8 y así sucesivamente. divide a 21 (si no es imposible formar subconjuntos que den la misma suma). tomemos el ejemplo 7, cada multiplo de 7 debe estar marcado en nuestro vector booleano. Podemos apreciar que justamente están marcados el 7,14 y 21, así que está es nuestra solución. Con esto es suficiente para obtener un Accepted en el Spoj.

Como nota adicional, suponiendo que dicha suma sea muy grande como para estar marcando en un vector booleano, usariamos la estructura de datos set.