今天我在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。建议在上面的代码中进行一些更正。
谢谢。
答案 0 :(得分:1)
你问了两个问题:
<强> 1。在线比赛中,时间限制意味着什么?
这是执行时间,而不是编译时间。无论如何,编译时间通常是无关紧要的。
<强> 2。如何优化我的代码以避免将来出现TLE?
通过使用try{
}
catch(Exception){
}
finally{
}
自行计时。如果您无法在自己的计算机上满足时间要求,请不要提交答案。如果您的计算机速度较慢,您可以通过将结果与您自己的时间进行比较,从成功的答案中了解性能比。
这是一种方法。
clock()