use strict 'vars'; my $n; my $m; my %faccost; #0: reading size #1: reading facility data #2: reading user (distance) info my $state = 0; my @data; while () { chomp; if ($state == 0) { if (/^\s*(\d+)\s+(\d+)/) { $m = $1; $n = $2; print "p $n $m\n"; print STDERR "Instance has $m facilities and $n users.\n"; $state = 1; } } elsif ($state == 1) { my @temp = split /\s+/, $_; my $f = shift @temp; if (not defined $f) {next;} my $w = shift @temp; $faccost{$f} = $w; print "f $f $w\n"; my $u = 0; foreach (@temp) { $u ++; push @data, $u; push @data, $f; push @data, $_; } } } my $ucount = 0; my $fcount = 0; while ($#data >= 0) { #print STDERR "."; my $u = shift @data; my $f = shift @data; my $w = shift @data; print STDOUT "a $u $f $w\n"; }