一道ACM题目,纠结了我好久,就是通不过,求大神看看

原创 2013年12月23日 16:35:55

网址是 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;
}

 

 

知道我哪里错的大神,求指出啊!!

Cache(缓存)和 Buffer(缓冲),主要区别是什么?

转载地址:https://www.zhihu.com/question/26190832 俩英文单词,不先看看本义吗?虽然都是抽象单词,但在各个地方都有具象的应用。 Buffer常见...
  • stpeace
  • stpeace
  • 2017-04-04 01:59:45
  • 3093

分手1天后,分手1周后,分手1个月,分手1季了,分手已经半年,分手1年后,最后……

分手1天后假若我们相遇,我会看着你的眼睛,用泪水告诉你,不愿看你离去。只要你回头,重新开始多少次我都愿意。………………分手1周后假若我们相遇,我不知所措,直到你消失在人群里。我才知道,这个夜晚陪伴我的...
  • stilling2006
  • stilling2006
  • 2010-10-26 21:59:00
  • 544

opengl 阴影显示

  • 2011年11月01日 20:54
  • 1.36MB
  • 下载

让我纠结了好久的报表

  • 2015年07月28日 15:09
  • 51KB
  • 下载

杭电ACM 1005 Number Sequence

Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n -...
  • dpmxbaqesb
  • dpmxbaqesb
  • 2017-04-15 23:51:16
  • 186

一键横屏--------纠结了好久

竖屏点击按钮 旋转到横屏 [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIDeviceOrientationPort...
  • u014380353
  • u014380353
  • 2015-10-23 17:06:00
  • 492

曾经的面试题目总结

猴子分桃问题: 五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一...
  • dizuo
  • dizuo
  • 2012-11-21 09:14:33
  • 1128

纠结了好久的递归

function fact(n) if n==0 then return 1 else return n*fact(n-1) end end print("ente...
  • a694861283
  • a694861283
  • 2017-09-29 12:42:10
  • 45

[随笔]OO设计之我见

1. Overide and New 这两个关键字主要是用来解决继承之后方法的调用问题。默认情况C#编译器会把New加在方法返回类型之前。也就说方法用了new之后(或者活不用Override),子类...
  • wzhiu
  • wzhiu
  • 2012-06-05 15:42:53
  • 586

NOJ[1508] 火烧赤壁2

时间限制: 1000 ms 内存限制: 65535 K 问题描述 上次出了一道火烧赤壁的题目给当时的新生,也就是你们的上一届学长们做,那么这次,我又想到了另一个想法。 上次的火烧赤壁的题号为127...
  • Guard_Mine
  • Guard_Mine
  • 2014-08-14 21:41:33
  • 757
收藏助手
不良信息举报
您举报文章:一道ACM题目,纠结了我好久,就是通不过,求大神看看
举报原因:
原因补充:

(最多只允许输入30个字)