在线裁判超过时限

时间:2015-08-18 18:17:49

标签: c

今天我在CodeChef尝试了在线编码比赛。当我试图提交答案时,我得到的时间超过了#34;警告。给出的时限是1秒。当我在我的电脑中编译它时,它是即时的,没有延迟,但当我尝试在网站IDE中编译相同的源代码时,它给了我5秒!怎么可能?时间限制在在线竞赛中意味着什么?是编制从程序启动到终止(即编译+用户输入+输出)所花费的时间或时间吗?

检查问题 here

我的代码 - C

#include<stdio.h>
void sort();
int count = 0,health[500];

int main()
{
int terror,test,i=0,h = 0;
printf("\nTest cases: ");
scanf("%d",&test);
for( h = 1 ; h <= test ; h++)
{
    i=0;
printf("\nTerrorists: ");
scanf("%d",&terror);
while(terror > i)
{
    scanf("%d",&health[i]);
    i++;
    count++;
}
if(i%2 != 0)
{
    printf("\nNO");
}
else
{
    sort();
    int f=0,l=count,v=count,middle = (count/2)+1,j=0,sum1=0,sum2=0;
    for(j=0;j<=middle;j++)
    {
        sum1 += health[f]+health[l];
        f++;l--;
        sum2 += health[j+(middle/2)]+ health[v-(middle/2)];
        v--;
    }
    if (sum1 == sum2)
    {
        printf("\nYES");
    }
    else
    {
        printf("\nNO",);
    }

}
}
return 0 ;
}

void sort()
{
int i , j , a;
for (i = 0; i < count; ++i)
{
    for (j = i + 1; j < count; ++j)
    {
        if (health[i] > health[j])
        {
            a =  health[i];
            health[i] = health[j];
            health[j] = a;
        }
    }
}
}

那么,你能解释两件事吗

1 )在线比赛中时间限制意味着什么?是编制从程序启动到终止(即编译+用户输入+输出)的时间或时间)?

2 )如何优化我的代码以避免将来出现TLE。建议在上面的代码中进行一些更正。

谢谢。

1 个答案:

答案 0 :(得分:1)

你问了两个问题:

<强> 1。在线比赛中,时间限制意味着什么?

这是执行时间,而不是编译时间。无论如何,编译时间通常是无关紧要的。

<强> 2。如何优化我的代码以避免将来出现TLE?

通过使用try{ } catch(Exception){ } finally{ } 自行计时。如果您无法在自己的计算机上满足时间要求,请不要提交答案。如果您的计算机速度较慢,您可以通过将结果与您自己的时间进行比较,从成功的答案中了解性能比。

这是一种方法。

clock()