70/60飘忽不定

P1093 [NOIP2007 普及组] 奖学金

爱晚亭哦 @ 2018-08-03 15:51:12

望dalao说明一下为什么相同代码会有不同分数,并且把代码改为AC(qwq)

#include<cstdio>
int main()
{
    int n,i,j,t;
    scanf("%d",&n);
    int a[n+1],b[n+1],c[n+1],d[n+1],sum[n+1];
    for(i=1;i<=n;i++)
    {
        scanf("%d %d %d",&a[i],&b[i],&c[i]);
        sum[i]=a[i]+b[i]+c[i];
        d[i]=i;
    }
    for(i=1;i<=n;i++)
    {
        for(j=i+1;j<=n+1;j++)
        {
            if(sum[i]<sum[j])
            {
                t=sum[i];
                sum[i]=sum[j];
                sum[j]=t;
                t=a[i];
                a[i]=a[j];
                a[j]=t;
                t=d[i];
                d[i]=d[j];
                d[j]=t;
            }
            if(sum[i]==sum[j]&&a[i]<a[j])
            {
                t=sum[i];
                sum[i]=sum[j];
                sum[j]=t;
                t=a[i];
                a[i]=a[j];
                a[j]=t;
                t=d[i];
                d[i]=d[j];
                d[j]=t;
            }
            if(sum[i]==sum[j]&&a[i]==a[j]&&d[i]>d[j])
            {
                t=sum[i];
                sum[i]=sum[j];
                sum[j]=t;
                t=a[i];
                a[i]=a[j];
                a[j]=t;
                t=d[i];
                d[i]=d[j];
                d[j]=t; 
            }
        }
    }
    for(i=1;i<=5;i++)
        printf("%d %d\n",d[i],sum[i]);
}

by cqqqwq @ 2018-08-03 15:59:12

  for(i=1;i<=n;i++)
  {
      for(j=i+1;j<=n+1;j++)//<--
      {

      }
  }

改为

  for(i=1;i<=n;i++)
  {
      for(j=i+1;j<=n;j++)//<--
      {

      }
  }

即可。

另:推荐学习一下swap()函数的使用。


by cqqqwq @ 2018-08-03 15:59:33

@True_konjac


by 爱晚亭哦 @ 2018-08-03 16:01:11

谢谢


|