#!/usr/local/bin/perl -w use strict; my $best_score = 0; my @best_list; my @best_set; open(IN, "l"); while () { /^[^0-9]/ && next; chomp; my @list = split(/ /); splice(@list, 0, 2); my ($score, @set) = &score(@list); if ($score > $best_score) { $best_score = $score; @best_list = @list; @best_set = @set; } ($score, @set) = &score(reverse(@list)); if ($score > $best_score) { $best_score = $score; @best_list = reverse(@list); @best_set = @set; } } close(IN); print join(' ', @best_list), "\n$best_score ", join(' ', @best_set), "\n"; sub score { my $i = 0; my $best = 0; my $last; my $last_char; my @best_set; my @current_set; foreach (@_) { if (defined($last)) { my $changed_char = &changed_char($last, $_); if (!defined($last_char)) { } elsif (($changed_char cmp $last_char) > 0) { $i++; push(@current_set, $last); } else { if ($i > $best) { $best = $i; @best_set = (@current_set, $last); } $i = 0; @current_set = (); } $last_char = $changed_char; } $last = $_; } if ($i > $best) { $best = $i; @best_set = (@current_set, $last); } ($best, @best_set); } sub changed_char { my ($last, $next) = @_; my $i = 0; while (substr($last, $i, 1) eq substr($next, $i, 1)) { $i++; } substr($next, $i, 1); }