ACM问题 我的代码为什么是Output Limit Exceed??
发布网友
发布时间:2022-05-16 19:17
我来回答
共1个回答
热心网友
时间:2024-03-22 17:05
如果一共有10000个输入,你不必给10000项全部排序,只需要找出最大的10个就可以了。
给段可以AC的代码供参考:
#include <iostream>
#include <string>
#include <set>
using namespace std;
class lessOp
{
public:
bool operator() (const string &a, const string &b)
{
if (a.length() > b.length()) return false;
else if (b.length() > a.length()) return true;
else return a < b;
}
};
int main()
{
int n;
lessOp less;
int c = 0;
while(1) {
cin >> n;
if (cin.eof()) return 0;
set<string, lessOp> s;
string mi;
for(int i = 0; i < n; i++) {
cin >> mi;
int j = 0;
while(mi[j]=='0') j++;
mi = mi.substr(j, mi.length() - j);
if (s.size() < 10) {
s.insert(mi);
}
else if (s.size() >= 10 && less(*s.begin(), mi)) {
s.erase(s.begin());
s.insert(mi);
}
}
cout << "Case #" << ++c << ":" << endl;
for (set<string, lessOp>::reverse_iterator it = s.rbegin(); it != s.rend(); ++it)
cout << *it << endl;
}
return 0;
}