noi4_1_1999[日志排序]

Posted love_saber

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noi4_1_1999[日志排序]相关的知识,希望对你有一定的参考价值。

复杂的判断&多余的空格=n个wrong answer

type event=record
            st:string[100];
            year,mon,day,hour,min,sec,lse:integer;
            t:longint;
           end;
var a:array[1..10000] of event;
    n:longint;
    
function bigger(i,j:integer):boolean;
begin
 if a[i].year>a[j].year then exit(true);
 if a[i].year<a[j].year then exit(false);
 if a[i].mon>a[j].mon then exit(true);
 if a[i].mon<a[j].mon then exit(false);
 if a[i].day>a[j].day then exit(true);
 if a[i].day<a[j].day then exit(false);
 if a[i].hour>a[j].hour then exit(true);
 if a[i].hour<a[j].hour then exit(false);
 if a[i].min>a[j].min then exit(true);
 if a[i].min<a[j].min then exit(false);
 if a[i].sec>a[j].sec then exit(true);
 if a[i].sec<a[j].sec then exit(false);
 if a[i].lse>a[j].lse then exit(true);
 if a[i].lse<a[j].lse then exit(false);
 exit(false);
end;
    
procedure scanf;
var k:longint;
    s:string;
    tmp:real;
begin
 n:=0;
 readln(s);
 while s<>‘‘ do
  begin
   inc(n);
   a[n].st:=s;
   while s[1]=‘ ‘ do delete(s,1,1);
   k:=pos(‘ ‘,s);
   delete(s,1,k);
   while s[1]=‘ ‘ do delete(s,1,1);
   k:=pos(‘-‘,s);
   val(copy(s,1,k-1),a[n].year);
   delete(s,1,k);
   k:=pos(‘-‘,s);
   val(copy(s,1,k-1),a[n].mon);
   delete(s,1,k);
   k:=pos(‘ ‘,s);
   val(copy(s,1,k-1),a[n].day);
   delete(s,1,k);
   while s[1]=‘ ‘ do delete(s,1,1);
   k:=pos(‘:‘,s);
   val(copy(s,1,k-1),a[n].hour);
   delete(s,1,k);
   k:=pos(‘:‘,s);
   val(copy(s,1,k-1),a[n].min);
   delete(s,1,k);
   k:=pos(‘,‘,s);
   val(copy(s,1,k-1),a[n].sec);
   delete(s,1,k);
   k:=pos(‘ ‘,s);
   val(copy(s,1,k-1),a[n].lse);
   delete(s,1,k);
   while s[1]=‘ ‘ do delete(s,1,1);
   k:=pos(‘(‘,s);
   val(copy(s,1,k-1),tmp);
   a[n].t:=trunc(tmp*1000);
   readln(s);
  end;
end;

procedure sort;
var i,j:longint;
    tmp:event;
begin
 for i:=1 to n-1 do
  for j:=i+1 to n do
   if (a[i].t>a[j].t)or((a[i].t=a[j].t)and(bigger(i,j))) then
    begin
     tmp:=a[i];
     a[i]:=a[j];
     a[j]:=tmp;
    end;
end;

procedure printf;
var i:longint;
begin
 for i:=1 to n do
  writeln(a[i].st);
end;

begin
 scanf;
 sort;
 printf;
end.

以上是关于noi4_1_1999[日志排序]的主要内容,如果未能解决你的问题,请参考以下文章

noi4_6_1799[最短前缀]

noi4_7_8468[单词序列]

Shell脚本切割日志

1130.日志排序

VSCode 配置 用户自定义代码片段 自定义自动代码补充

这些 C++ 代码片段有啥作用?