View difference between Paste ID: zMBRyvgR and b5c0xZuW
SHOW: | | - or go back to the newest paste.
1
program sfdsf;
2
3
{$APPTYPE CONSOLE}
4
5
uses
6
  SysUtils;
7
8
type
9
  triplet = record
10
    a, b, c: integer;
11
    s: string;
12
  end;
13
14
var
15
  f, i, k, n, j: integer;
16
  s, s1, s2: string;
17
  b, b1, b2: boolean;
18
  a: array [1..100000] of triplet;
19
20
procedure swap(var a, b: triplet);
21
var
22
  c: triplet;
23
begin
24
  c := a;
25
  a := b;
26
  b := c;
27
end;
28
29
function fff(s, s1: string): boolean;
30
var
31
  i: integer;
32
begin
33
  for i := 1 to 3 do
34
    if(ord(s[i]) < ord(s1[i])) then
35
    begin
36
      fff := true;
37
      exit;
38
    end;
39
  fff := false;
40
end;
41
42
begin
43
  readln(n);
44
  k := 0;
45
  for j := 1 to n do
46
  begin
47
    readln(s);
48
    b := false;
49
    b1 := false;
50
    b2 := false;
51
    s1 := s[5] + s[6] + s[7];
52
    s2 := s[9] + s[10] + s[11];
53
    s := s[1] + s[2] + s[3];
54
    for i := 1 to k do
55
    begin
56
      if (s = a[i].s) then
57
      begin
58
        inc(a[i].a);
59
        b := true;
60
      end;
61
      if (s1 = a[i].s) then
62
      begin
63
        inc(a[i].b);
64
        b1 := true;
65
      end;
66
      if (s2 = a[i].s) then
67
      begin
68
        inc(a[i].c);
69
        b2 := true;
70
      end;
71
    end;
72
    if (not b) then
73
    begin
74
      inc(k);
75
      a[k].s := s;
76
      a[k].a := 1;
77
    end;
78
    if (not b1) then
79
    begin
80
      if(s1 <> a[k].s) then inc(k);
81
      a[k].s := s1;
82
      inc(a[k].b);
83
    end;
84
    if (not b2) then
85
    begin
86
      if(s2 = a[k - 1].s) then inc(a[k-1].c)
87
      else if (s2 = a[k].s) then inc(a[k].c)
88
      else
89
      begin
90
        inc(k);
91
        a[k].s := s2;
92
        a[k].c := 1;
93
      end;
94
    end;
95
  end;
96
  for i := 1 to k do
97
    for j := 1 to k do
98
      if (a[j].a > a[j + 1].a) then swap(a[j], a[j + 1])
99
        else if (a[j].a = a[j + 1].a) and (a[j].b > a[j + 1].b) then swap(a[j], a[j + 1])
100
          else if (a[j].a = a[j + 1].a) and (a[j].b = a[j + 1].b) and (a[j].c > a[j + 1].c) then swap(a[j], a[j + 1])
101
            else if (a[j].a = a[j + 1].a) and (a[j].b = a[j + 1].b) and (a[j].c = a[j + 1].c) and (fff(a[j].s, a[j + 1].s)) then swap(a[j], a[j + 1]);
102
  for i := k + 1 downto 2 do writeln(a[i].s, ' ', a[i].a, ' ', a[i].b, ' ', a[i].c);
103
end.