蓝桥杯 算法练习 kAc给糖果你吃 C语言,为什么只得了50分

#include <stdio.h>
int main()
{
int n, m;
int a[1000];
scanf("%d %d", &n, &m);
int i;
int p=0;
long long x = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (i = 1; i < n; i++)
{
if (a[i-1] < a[i ])
{
p = a[i ];
a[i ] = a[i-1];
a[i-1] = p;
}
}
if (n > m)
{
for (i = 0; i < m; i++)
{
x += a[i];
}
}
else
{
for (i = 0; i < n; i++)
{
x += a[i];
}
}
printf("%d", x);
return 0;
}

数据过大时可能int不够了,改成long long,你的输出也要改成对应的格式%lld

x是long long类型 ,输出得用lld
printf("%lld", x);

楼主知道为什么了吗 可以给我讲讲吗??? 感谢

排序那里出问题了,应该这样

    for (i = 0; i < n-1; i++)    
    {
        for(j=i+1;j<n;j++)
        {
            if (a[j] > a[i])
            {
            p = a[i];
            a[i] = a[j];
            a[j] = p;
            }
        }
    }