int* decrypt(int* code, int codeSize, int k, int* returnSize){ *returnSize = codeSize; int* arr = (int*)calloc(sizeof(int), codeSize); int i, left, right; for (i = 1; i<codeSize; i++) code[i] += code[i - 1]; for (int i = 0; i<codeSize && k != 0; i++){ if (k>0){ arr[i] = code[(i + k) % codeSize] - code[i]; if ((i + k) % codeSize < i) arr[i] += code[codeSize - 1]; } else{ arr[i] = code[(i - 1 + codeSize) % codeSize] - code[(i + k - 1+codeSize)%codeSize]; if ((i - 1 + codeSize) % codeSize < (i + k - 1 + codeSize) % codeSize) arr[i] += code[codeSize - 1]; } } return arr; }