Aiuto Petali Timeout

Riesco ad ottenere 90 su 100, 2 testcase vanno in timeout per circa 100 millesimi.
Brevemente mi calcolo i divisori di N in O(N/2) e per ciascuno vedo se esistono soluzioni
Come posso migliorare il mio codice?

#pragma GCC optimize("Ofast")
#pragma GCC optimization ("unroll-loops")
#pragma GCC target("avx,avx2,fma")
using namespace std;

int solve(int N, int* V) {
	int sol=0;
	for(int x=1;x<=N/2;x++)
	
		if(N%x==0){		
			for(int i=0,j;i<x;i++){
				
	  			bool valid=true;
	  			
				  for( j=i+x; j<N; j+=x)	
					if(V[i]!=V[j]){
						valid=false;
						break;
					}
		
				if(valid)
					sol++;
			}
		}
		
	return sol;
}

Ti consiglio di dare un’occhiata a questo topic.

ho fatto una soluzione che dovrebbe essere giusta ma semplicemente negli ultimi casi occupa troppo spazio
perché è una matrice tridimensionale di booleani di 32*(N/2-1)^2 e avevo tentato di ridurla a 32*(n.divisiori di N)(N/2+1) quindi credo di provare a fare 32 cicli (ciascuno per ogni valore di petalo) ed usare la stessa matrice (n.divisiori di N)(N/2+1)

Prova a postare il codice

ho aggiornato il messaggio sopra spiegando bene, al momento non sono in grado di postare codice

Con un petalo puoi creare una corolla solo del colore di quel petalo perciò non ho ben capito perché ti salvi ogni singolo colore

non me li salvo ripeto lo stesso algoritmo ogni volta su petali diversi(tutti 1…tutti 2 …etc etc),
sono riuscito a minimizzare lo spazio ma comunque vado in timeout