网址是 cpp.zjut.edu.cn 1628题 AC胜出榜
如题:
AC胜出榜
Time Limit:1000MS Memory Limit:32768K
Description:
浙江工业大学Online Program Space系统中有一个题库。每道题目都有一个AC胜出榜。AC胜出榜是对该题提交代码的AC用户之排名,取前50名。排名先按运行耗时从小到大排;若运行耗时相同,再按使用内存空间从小到大排;若还是相等,则按提交日期和时间的先后顺序排,早提交排在前,晚提交排在后。一个用户若对某题AC了多次,只取最好的一次参加胜出榜排名。显然,各种非AC提交,只能被忽略。请你设计程序来产生这个AC胜出榜。Input:
先是输入一个整数,表示要编制AC胜出榜的题号。随后是一些提交记录(记录数<20000)。每个提交记录包括: 提交号(整数);用户名(无空格字串);题号(字串);提交状态(无空格字串),描述AC(Accept)或者WA(Wrong Answer)等状态;耗时(整数,表示毫秒);空间耗用(整数,表示KB数);编译器(无空格字串);提交日期(”YYYY-MM-DD”格式字串)和提交时间(”HH-MM-SS”格式字串)。每个数据分量之间都有一个空格隔开。Output:
输出AC前50名,作为胜出榜。若AC总数不足50,则全部输出。输出时,每个数据分量之间空一格。输出格式按下列描述: 名次(宽度2);提交号(宽度6);用户名(宽度15);耗时(宽度5);空间耗用(宽度5);编译器(宽度3);提交日期(宽度10”YYYY-MM-DD”格式);提交时间(宽度8”HH-MM-SS”格式)。除了用户名左对齐外,其余都为右对齐。Sample Input:
1019 674530 A282828 1328 AC 500 244 VC8 2010-12-19 14:50:08 674528 A201011803 1019 WA 12 464 BCB 2010-12-19 14:49:00 674527 A2010811008 1245 AC 15 164 VC8 2010-12-19 14:48:48 674526 A2024450202 1019 AC 16 164 VC8 2010-12-19 14:48:31 674525 A206811008 1260 AC 31 164 VC8 2010-12-19 14:47:58 674524 A20811803 1019 AC 15 464 BCB 2010-12-19 14:47:44 674523 A206811008 1262 AC 15 164 VC8 2010-12-19 14:47:05 674522 A206811805 1019 AC 15 204 VC8 2010-12-19 14:46:34 674521 A206811008 1019 AC 10 164 VC8 2010-12-19 14:46:21 674520 A206811008 1019 AC 15 164 VC8 2010-12-19 14:45:51 674519 A206811805 1019 CE 0 0 VC8 2010-12-19 14:45:30
Sample Output:
1 674521 A206811008 10 164 VC8 2010-12-19 14:46:21
2 674522 A206811805 15 204 VC8 2010-12-19 14:46:34
3 674524 A20811803 15 464 BCB 2010-12-19 14:47:44
4 674526 A2024450202 16 164 VC8 2010-12-19 14:48:31
以下是我的代码:
#include<iostream>
#include<string>
#include<iomanip>
#include<vector>
#include<fstream>
#include<algorithm>
using namespace std;
struct q{
int bian;string acc;
int time;int nei;string vcb;string t1,t2;
};
bool mysort(q q1,q q2){
if(q1.time!=q2.time)
return q1.time<q2.time;
else if(q1.nei!=q2.nei)
return q1.nei<q2.nei;
else if(q1.t1!=q2.t1)
return q1.t1<q2.t1;
else
return q1.t2<q2.t2;
}
bool mysort2(q q1,q q2){
if(q1.acc!=q2.acc)
return q1.acc<q2.acc;
else if(q1.time!=q2.time)
return q1.time<q2.time;
else if(q1.nei!=q2.nei)
return q1.nei<q2.nei;
else if(q1.t1!=q2.t1)
return q1.t1<q2.t1;
else
return q1.t2<q2.t2;
}
int main(){
// ifstream cin("1.txt");
int timu;cin>>timu;
int i;
vector<q> v;
int ii=0;
for(;cin>>i&&ii<20001;){
string acc;int ti;string ac;
int time;int nei;string vcb;string t1,t2;
cin>>acc>>ti>>ac>>time>>nei>>vcb>>t1>>t2;
if(ti!=timu||ac!="AC"){
continue;
}
q aa;
aa.bian=i;
aa.acc=acc;
aa.time=time;
aa.nei=nei;
aa.vcb=vcb;
aa.t1=t1;aa.t2=t2;
v.push_back(aa);
ii++;
}
sort(v.begin(),v.end(),mysort2);
// v.erase(unique(v.begin(),v.end()),v.end());
for(int e=1;e<v.size();e++){
if(v[e].acc==v[e-1].acc){
v.erase(v.begin()+e);
e--;
}
}
sort(v.begin(),v.end(),mysort);
for(int k=0;k<v.size()&&k<50;k++){
cout<<setiosflags(ios::right)<<setw(2)<<k+1<<' ';
cout<<setiosflags(ios::right)<<setw(6)<<v[k].bian<<' ';
cout.setf(ios::left,ios::adjustfield);
cout<<setw(15)<<v[k].acc<<' ';
cout<<setiosflags(ios::right)<<setw(5)<<v[k].time<<' ';
cout<<setiosflags(ios::right)<<setw(5)<<v[k].nei<<' ';
cout<<setiosflags(ios::right)<<setw(3)<<v[k].vcb<<' '<<v[k].t1<<' '<<v[k].t2<<endl;
}
return 0;
}
知道我哪里错的大神,求指出啊!!