帮忙看看时间主要浪费在哪里了

gamer67 2013-01-25 12:43:16
我是新手 在做oj的时候遇到time limite exceed。 请帮我看看这到底主要是哪里浪费了时间
题目在这
http://ac.jobdu.com/problem.php?pid=1014
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;

struct App
{
string id;
int point;
void clear()
{
id = "";
point = 0;
}
} ap;
bool cmp(const App& ap1, const App& ap2)
{
if(ap1.point == ap2.point)
return ap1.id < ap2.id;
return ap1.point > ap2.point;
}
int main()
{
freopen("in.txt", "r", stdin);
int N,M,G,n,m,*grade,i,ix;
string line;
vector<App> st;
while( (cin>>N), N )
{
n = 0;
st.clear();
cin>>M>>G;
grade = new int[M];
for(i=0; i<M; ++i)
{
cin>>grade[i];
}
cin.get();
for(i=0; i<N; ++i)
{
getline(cin,line);
istringstream iss(line);
ap.clear();
iss>>ap.id>>m;
while(m--)
{
iss>>ix;
ap.point+=grade[ix-1];
}
if(ap.point >= G)
{
++n;
st.push_back(ap);
}
}
sort(st.begin(),st.end(),cmp);
cout<<n<<endl;
for(i=0; i!=st.size(); ++i)
cout<<st.at(i).id<<" "<<st.at(i).point<<endl;
}
return 0;
}
...全文
187 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamer67 2013-01-25
  • 打赏
  • 举报
回复
搞定了 把cin cout换成scanf和printf就可以了 不过这速度差的也太离谱了 - -
dingqiang107 2013-01-25
  • 打赏
  • 举报
回复
引用 2 楼 gamer67 的回复:
输入遇到0自动结束 那个没有问题 刚才研究了下 貌似cin cout比较费时间
呃,没注意。你App里有一个string,这样排序会比较慢。不过如果数据量很小的话,倒还问题不大。
gamer67 2013-01-25
  • 打赏
  • 举报
回复
输入遇到0自动结束 那个没有问题 刚才研究了下 貌似cin cout比较费时间
dingqiang107 2013-01-25
  • 打赏
  • 举报
回复
你的最外层循环是死循环,N的值没变。

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧