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

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;
}
...全文
156 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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的值没变。
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2013-01-25 12:43
社区公告
暂无公告