Guest User

Untitled

a guest
Feb 19th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.18 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use List::Util q(max);
  5.  
  6. my $track_count = int(next_line());
  7.  
  8. my @tracks;
  9.  
  10. for(1 .. $track_count) {
  11.     my @courses;
  12.  
  13.     my $course_count = int(next_line());
  14.  
  15.     for(1 .. $course_count) {
  16.     my $line = next_line();
  17.  
  18.     my ($course_number, $follow_up_one, $follow_up_two) = prepare($line);
  19.  
  20.     $courses[$course_number] = {follow_up_one => $follow_up_one,
  21.                     follow_up_two => $follow_up_two};
  22.     }
  23.  
  24.     push @tracks, \@courses;
  25. }
  26.  
  27. foreach my $track (@tracks) {
  28.     print search(100, $track, 0) . "\n";
  29. }
  30.  
  31. sub search
  32. {
  33.     my ($course_number, $courses_ref, $total) = @_;
  34.  
  35.     my @courses = @{$courses_ref};
  36.    
  37.     if($course_number == 0) {
  38.     return $total;
  39.     } else {
  40.     return max(search($courses[$course_number]->{follow_up_one}, $courses_ref, $total + $course_number),
  41.            search($courses[$course_number]->{follow_up_two}, $courses_ref, $total + $course_number));
  42.     }
  43. }
  44.  
  45. sub prepare
  46. {
  47.     my ($line) = @_;
  48.  
  49.     my ($course_number, $follow_up_one, $follow_up_two) = split(' ', $line);
  50.  
  51.     return ($course_number, $follow_up_one, $follow_up_two);
  52. }
  53.  
  54. sub next_line
  55. {
  56.     my $line = <STDIN>;
  57.     return $line;
  58. }
Add Comment
Please, Sign In to add comment