Stone codechef:代码有什么问题?

时间:2015-03-15 18:17:18

标签: c

我是编码和找到自己的新手!我在codechef http://www.codechef.com/problems/RRSTONE解决了一个问题。 所有的测试案例都在我身边传递,但答案仍然是错误的。任何帮助???

//codechef stones
#include<stdio.h>

int main(int argc, char *argv[])
{
    unsigned int size;  //N=size
    unsigned long int k;    //k = K
    scanf("%u %lu",&size,&k);
    long int a[size], max;
    int i,j;

    for(i=0;i<size;i++)
        scanf("%lu",&a[i]);

    i=j=0;

    if(k==0)
        goto printing;
    if(k%2==1)
        k=1;
    else
        k=2;

    for(j=0;j<k;j++)
    {
        max=a[0];
        for(i=0;i<size-1;i++)
        {
            if(max<a[i])
                max=a[i];
        }
        for(i=0;i<size;i++)
            a[i]=max-a[i];
    }

    printing:   //removed this comment
    for(i=0;i<size-1;i++)
        printf("%d ",a[i]);

    printf("%d",a[i]);

    return 0;
} 

1 个答案:

答案 0 :(得分:-1)

我建议你应该正确看待这些标准。

  

约束

  • 1 <= N <= 105
  • 0 <= K <= 109
  • Ai的绝对值不超过 2 * 10 ^ 9

    以下是修改过的代码,请尝试使用此功能。

还有一件事:因为你正在学习首先理解代码。

#include<stdio.h>

int main(int argc, char *argv[])
{
    unsigned int size;  //N=size
    unsigned long int k;    //k = K
    scanf("%u %lu",&size,&k);
    long long int a[size], max;     //CHANGE HERE!!!! and so forth for long long
    int i,j;

    for(i=0;i<size;i++)
        scanf("%lld",&a[i]);

    i=j=0;

    if(k!=0)
    {
        if(k%2==1)
            k=1;
        else
            k=2;

        for(j=0;j<k;j++)
        {
            max=a[0];
            for(i=1;i<size;i++)
            {
                if(max<a[i])
                    max=a[i];
            }
            for(i=0;i<size;i++)
                a[i]=max-a[i];
        }
    }

    for(i=0;i<size;i++)
        printf("%lld ",a[i]);

    return 0;
}
编辑:对不起,我忘记了这个说明。当您使用在线编译器时,有时会出现 goto 问题,因此最好尝试使用干净的方法,并确保为源语言选择正确的选项( C-gcc或C99你正在使用)。早些时候我也经历过同样的事情。