#4521: 為何產生TLE(10S) 新手求教 感謝


wwww (米豆)


#include <iostream>
#include <cstdlib>

using namespace std;

struct world
{
      string name;           // 隊名 
      string score;          // 排名時數 
} ; 
    
typedef struct world snd;     // 定義資料型態名稱--排名 

bool cmp(snd a,snd b){

     if(a.score<b.score ) return 1;
     return 0;/*0表示要交換*/
}

int main(void){  
      
    int n=0;
    while( true ){
         cin >> n;
         if ( n==0 ) { break; }
         if ( n<3 || n>100000 ) { break;}
         snd s[n];
         string cname[n];
         for(int i=0;i<n;i++){
             cin >>s[i].name>>s[i].score;
             cname[i]=s[i].name;
         }
             
          sort(s,s+n,cmp);    //排序   
   
          cout<<"LIST START"<<endl;
          int k=0,ck=0;
          k=n/3;
          ck=k;
          for(int i=k;i<n;i++){
              if ( s[k-1].score == s[i].score ) ck++;
              else break;
          }     
          
          for(int i=0;i<n;i++){
              for(int j=0;j<ck;j++){
                  if ( cname[i] == s[j].name ) {
                       cout <<cname[i]<<endl;
                       break;
                  }     
              }
          }
    cout<<"LIST END"<<endl;

    }     
//system("pause");
return 0;

}