Aiuto in Cicla e moltiplica

#include <iostream>
#include <vector>

using namespace std;

vector<long long int> execute(int N, int K, int D, vector<int> A);

int main() {
    int N, K, D;
    std::cin >> N >> K >> D;

    std::vector<int> A(N);
    for (int& x : A) std::cin >> x;

    std::vector<long long int> B = execute(N, K, D, A);
    for (std::size_t i = 0; i < B.size(); ++i) {
        std::cout << B[i];
        if (i + 1 < B.size()) std::cout << " ";
    }
    std::cout << std::endl;
   return 0;
}

vector<long long int> execute(int N, int K, int D, vector<int> A) {
   vector<long long int> B(N);
   for (int i = 0; i < N; ++i) {
      B[i] = 1;
   }
   for(int l = 0; l < K; l++)
   {
      for(int i = 0; i < N; i++)
      {
         B[i] = A[i] * B[i];
      }

      long long int num = A[N-1];
      for(int c = 0; c < D; c++){
         for(int i = N-1; i > 0; i--){
            A[i] = A[i-1];
         }
         A[0] = num;
         num = A[N-1];
      }
   }
   return B;
}

é da giorni che provo a farlo funzionare ma non capisco dove ho sbagliato.
Qualcuno riesce a dirmi dove sbaglio?

Ciao, potresti formattare correttamente il tuo codice?
Comunque ci sono un po’ di problemi: intanto non stai riducendo sotto modulo i risultati delle moltiplicazioni, che dunque overflowano. Inoltre la tua soluzione è lentissima: per K volte stai ruotando di D posizioni l’array, una unità per volta in O(N) per una complessità finale di O(NKD). Dovrebbe essere abbastanza semplice velocizzare almeno la rotazione, per quanto non basti a prendere tutti i punti.

Comunque, visto che mi sembra di capire che sei alle prime armi, ti consiglio di partire da problemi un po’ più facili. Questa è un ottima guida per imparare la programmazione competitiva partendo dalle basi.