我的CODE如下
#include <iostream>
#include <algorithm>
using namespace std;
class score
{
public:
string name;
int H;
int M;
int S;
int SSS;
};
bool func(score a, score b)
{
if(a.H!=b.H)
return a.H<b.H;
if(a.M!=b.M)
return a.M<b.M;
if(a.S!=b.S)
return a.S<b.S;
if(a.SSS!=b.SSS)
return a.SSS<b.SSS;
return a.SSS!=b.SSS;
}
bool comp(score a, score b)
{
if(a.H!=b.H||a.M!=b.M||a.S!=b.S||a.SSS!=b.SSS)
return 0;
return 1;
}
int main()
{
int n, i, j, l;
string s;
while(cin >> n)
{
if(n==0)
break;
score* SCORE = new score [n];
for(i=0;i<n;i++)
{
cin >> SCORE[i].name;
cin >> s;
l=s.length();
for(SCORE[i].H=0, j=0;s[j]>='0'&&s[j]<='9';j++)
SCORE[i].H=SCORE[i].H*10+s[j]-'0';
for(SCORE[i].M=0, j++;s[j]>='0'&&s[j]<='9';j++)
SCORE[i].M=SCORE[i].M*10+s[j]-'0';
for(SCORE[i].S=0, j++;s[j]>='0'&&s[j]<='9';j++)
SCORE[i].S=SCORE[i].S*10+s[j]-'0';
for(SCORE[i].SSS=0, j++;j<l;j++)
SCORE[i].SSS=SCORE[i].SSS*10+s[j]-'0';
while(SCORE[i].SSS&&SCORE[i].SSS<100)
SCORE[i].SSS*=10;
}
sort(SCORE, SCORE+n, func);
cout << "LIST START\n";
for(i=0;i<n/3;i++)
cout << SCORE[i].name << endl;
for(l=i-1;i<n;i++)
if(comp(SCORE[l], SCORE[i]))
cout << SCORE[i].name << endl;
else break;
cout << "LIST END\n";
}
return 0;
}
可是不知道哪裡錯了
可以提示一下嗎
我已經知道了呵呵
是題目好像表達得沒有很好
輸出的順序只要看在側資裡面出現的順序,而跟他們的快或慢沒有關係
另外時間直接讀成string好像比較無腦,耶