这个程序如何优化,减少程序的运行时间


#include<stdio.h>
int str1[20005];
int str2[20005];
int x1[4];

int main(){
    int t;/*t数组*/
    int n;/*n堆糖*/
    int m;/*m次操作*/
    int d;
    int c=0;
    int b=0;
    int i,r,x,q;
    int q1=0;
    int a=0;
    int n1=1;
    int n2=0;
    
    scanf("%d",&t);/*循环次数*/
    while(t != 0){
        scanf("%d",&n);
        while(q<n && scanf("%d",&d) != EOF){
            str1[q++]=d;    
        }/*输入带空格的数*/
        q=1;
        str2[0]=str1[0];
        while(q<n){
            str2[q]=str1[q]-str1[q1];
            q++;
            q1++;
        }
        q=0;
        scanf("%d",&m);
        while(m != 0){
            while(q<3 && scanf("%d",&d) != EOF){
                x1[q++]=d;
            }
            q=0;
            i=x1[0]-1;
            r=x1[1];
            x=x1[2];
            str2[i]=str2[i]+x;
            str2[r]=str2[r]-x;
            m--;
            }
        str1[0]=str2[0];
        while(n1<=n-1){
            str1[n1]=str2[n1]+str1[n2];
            n1++;
            n2++;
        }/*27-51使用差分算法*/
        for(q=0;q<=n-1;q++){
            if(q!=n-1){
            printf("%d ",str1[q]);
            }else{
            printf("%d",str1[q]);
            }/*依次输出带空格的数*/
    }
      t--;    
    } 
    return 0;
}

第一行是整数x,表示有x组样例,每组样例的第一行是整数y,表示有y个数组,第二行有y个数,表示每个数组的大小.第三行是整数z,表示z次操作,接下去的z行,每行有三个数字l,r,x,表示要把区间[l,r]中的每一个数加x.
比如:input:1
5
7 5 9 2 4
3
1 2 3
2 3 4
3 5 5
output :10 12 18 7 9
大家有办法优化这个代码吗?减少代码运行的时间。

发题目吧 你这循环太多了 时间复杂度O3了