c语言循环问题简单运用,求解

按排列顺序依次给他们编号 1,2,…,n。然后,从 1 号小朋友开始,将自己的糖果平均分成三份(如果有多余的糖果则立即吃掉),自己保留一份,其余两份分别分给与他相邻的两个小朋友。按照这样一直到n号
第一行3≤n≤30
第二行为空格隔开的 n 个正整数,依次表示游戏开始时按编号从 1 到 n 的顺序每个小朋友手上的糖果数。
输入
3
3 3 3
输出
3 2 1

#include<stdio.h>
int main() {
    int n,  i, t,l,r;
    scanf("%d", &n);
    int a[n + 1];
    for(i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
    }
    for(i = 1; i <= n; i++) {
        t = a[i] / 3;
        l = i - 1;
        r = i + 1;
        if(i == 1) {
            l = n;
        }
        if(i == n) {
            r = 1;
        }
        a[l] += t;
        a[r] += t;
        a[i] = t;
    }
    for(i=1;i<=n;i++){
        printf("%d ",a[i]);
    }
    return 0;
}