洛谷P1074校门外的树https://www.luogu.com.cn/problem/P1047#submit

第一个和第二个只有42行的else有区别,但第一个通过了,第二个没过,不理解.

#include<stdio.h>
int main()
{
    int l,m,a[100][2],i,s=0,min,t,j,k;
    scanf("%d %d\n%d %d",&l,&m,&a[0][0],&a[0][1]);
    for(i=1;i<m;i++)
    {
        scanf("%d %d",&a[i][0],&a[i][1]); 
    }
    for(int j=0;j<m;j++)
    {
        min=a[j][0];
        for(int i=j+1;i<m;i++)
        {
            if(a[i][0]<min)
            {
                t=min;
                min=a[i][0];
                a[i][0]=t;
            }
        }
        a[j][0]=min;
    }
    for(int j=0;j<m;j++)
    {
        min=a[j][1];
        for(int i=j+1;i<m;i++)
        {
            if(a[i][1]<min)
            {
                t=min;
                min=a[i][1];
                a[i][1]=t;
            }
        }
        a[j][1]=min;
    }
    k=a[0][1]-a[0][0]+1;
    for(i=1;i<m;i++)
    {
        if(a[i][0]>a[i-1][1])k+=a[i][1]-a[i][0]+1;
        else 
        {
            a[i][0]=a[i-1][0];
            k=a[i][1]-a[i][0]+1;
        }
    }
    s=l-k+1;
    printf("%d",s);
    return 0;    
} 
#include<stdio.h>
int main()
{
    int l,m,a[100][2],i,s=0,min,t,j,k;
    scanf("%d %d\n%d %d",&l,&m,&a[0][0],&a[0][1]);
    for(i=1;i<m;i++)
    {
        scanf("%d %d",&a[i][0],&a[i][1]); 
    }
    for(int j=0;j<m;j++)
    {
        min=a[j][0];
        for(int i=j+1;i<m;i++)
        {
            if(a[i][0]<min)
            {
                t=min;
                min=a[i][0];
                a[i][0]=t;
            }
        }
        a[j][0]=min;
    }
    for(int j=0;j<m;j++)
    {
        min=a[j][1];
        for(int i=j+1;i<m;i++)
        {
            if(a[i][1]<min)
            {
                t=min;
                min=a[i][1];
                a[i][1]=t;
            }
        }
        a[j][1]=min;
    }
    k=a[0][1]-a[0][0]+1;
    for(i=1;i<m;i++)
    {
        if(a[i][0]>a[i-1][1])k+=a[i][1]-a[i][0]+1;
        else k=a[i][1]-a[i-1][0]+1;
    }
    s=l-k+1;
    printf("%d",s);
    return 0;    
}

第一段代码中改变了a[i][0],而第二段没有.
一次循环结束后i+1,再循环时else用到了a[i-1][0],即上次循环中的a[i][0],所以a[i][0]是否改变对结果有影响