一道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;
}

 

 

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

一道关于java线程中断的题目,求大神指导,昨晚的阿里巴巴笔试题

以下每个线程输出的结果是什么?不用关心顺序,只需输出结果集即可。 public class TestThread { public static void main(String[] args){...

poj1655-又是一道简单而又纠结的题目

题目很好理解,就是去掉树上的一个节点,看看剩下的子树中最大的是多少,然后在这些最大值中求一个最小值,如果有多个点都是最小值,那么找一个序号最小的节点。 输出节点号,和最小值。   经过简单分析,...

HD ACM C++ 1020 此文为了吐槽并想求大神解惑

Encoding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total...

两个有序数组合起来求第k小的数+左老师专访ACM大神(笔记)8月5日斗鱼直播实录

1.长度相等的两个有序数组寻找上中位数注:上中位数1 2 3 4 5 6为3(偶数两个中位数为前面那个) 思路:去掉不可能为上中位数的,剩下的简化组合求上中位数。1.1 奇数序列 位置 位置...

某校大神很给力的ACM总结

  • 2013年05月20日 20:58
  • 58KB
  • 下载

纠结了好久才弄得明白一点点的汉诺塔问题,现在把一些方程与大家分享一下!

                         谢谢各位的支持!下面是我这两天仔细研究的结果,希望大家看看有什么不对!有的话,请提出你的意见,谢谢了!这个程序是目的是:将A柱上的金盘移到B柱上...

由一道acm题目所想到

已经很长一段时间没有ac题了,一周之前报名参加了计算客的编程大赛,虽然我的结果不 是特别理想,但是还是学到了一些东西。下边,我先贴出题目和对应的程序源码: 代码如下...

自己改编的一道acm题目。感觉思想不错。比较创新

奥运排序问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm...

一道简单的ACM题目讨论

准备考研了!但是发现自己的编程很不规范! 下面是杭州电子科技大学的一道acm Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi U...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一道ACM题目,纠结了我好久,就是通不过,求大神看看
举报原因:
原因补充:

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