有什么技巧可以让我的代码在给定的时间限制内执行?也许一些合乎逻辑的变化或任何东西。
当我在 CodeChef 中提交我的解决方案时,它显示超出时间限制,但我认为这是足够快的简单代码。怎么能在时限内,即3秒内执行?
代码
long int iv, aia[1000][1000];
long int imax = 0;
long int score(int ia, int ib);
int main() {
int ii, ij;
long int iut, ivt, ie;
memset(aia, 0, 1000000);
scanf("%d %d", &iv, &ie);
if((iv <= 1000) && (iv >= 2)) {
if((ie >= (iv-1)) && (ie <= ( (iv*(iv-1)) / 2) )) {
for(ii = 0; ii<ie; ii++) {
scanf("%d%d", &iut, &ivt);
if((iut >= 0) && (ivt <= (iv -1))) {
scanf("%d", &aia[iut][ivt]);
if(aia[iut][ivt] < 0) {
return 1;
}
aia[ivt][iut] = aia[iut][ivt];
}
else {
return 1;
}
}
for(ii = 0; ii<iv; ii++) {
for(ij = 0; ij<iv; ij++) {
printf("%d ", score(ii, ij));
imax = 0;
}
printf("\n");
}
}
}
return 0;
}
long int score(int ia, int ib) {
int ii;
int long imaxt = 0;
if(ia == ib) {
return 0;
}
if(aia[ia][ib] != 0) {
imax = aia[ia][ib];
}
for(ii = 0; ii<iv; ii++) {
if((ii != ib) && (ii != ia)) {
if(aia[ia][ii] != 0) {
if(aia[ii][ib] != 0) {
imaxt = (aia[ia][ii] < aia[ii][ib]) ? aia[ia][ii] : aia[ii][ib];
if(imaxt > imax) {
imax = imaxt;
}
}
}
}
}
return imax;
}