#16077: CPP TLE 求救!


timmy940410 (遊艇)

學校 : 臺北市私立延平高級中學
編號 : 69053
來源 : [122.116.197.27]
最後登入時間 :
2021-02-19 11:39:00
c010. 10107 - What is the Median? -- UVa10107 | From: [114.32.213.13] | 發表日期 : 2018-11-17 15:18

#include<stdio.h>
#include<algorithm>
int main(){
    int a[10001];
    for(int i=1;;i++){
        scanf("%d",&a[i]);
        std::sort(a+1,a+i+1);
        if(i%2==1){
            printf("%d\n",a[i-i/2]);
        }else{
            printf("%d\n",(a[i/2]+a[i/2+1])/2);
        }
    }
}

 
#16078: Re:CPP TLE 求救!


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
c010. 10107 - What is the Median? -- UVa10107 | From: [49.158.83.43] | 發表日期 : 2018-11-17 15:47

#include
#include
int main(){
    int a[10001];
    for(int i=1;;i++){
        scanf("%d",&a[i]);
        std::sort(a+1,a+i+1);
        if(i%2==1){
            printf("%d\n",a[i-i/2]);
        }else{
            printf("%d\n",(a[i/2]+a[i/2+1])/2);
        }
    }
}


因為您的程式碼是在迴圈裡才輸入資料,然而題目是要求讀到檔尾(EOF)。因此在迴圈裡不一定會讀到資料,所以就卡在那裡無法正常結束。

因此可以考慮使用 while(scanf("%d", &a[i]) == 1) ,這樣可以確保他有讀到數字,再進入迴圈裡實作題目所要求的部分。

 

以上,希望有幫助到您。

 
ZeroJudge Forum