--- /dev/null
+module PMInstance where
+import Data.Array.IArray
+import Data.Array.Unboxed
+import ArrayStuff
+import Formatter
+
+type Wt = Double -- Can be any RealFrac.
+numAsWt x = fromInteger (toInteger x)
+
+data PMInstance = PMInstance
+ Int -- numReviewers
+ Int -- numProposals
+ (UArray Int Wt) -- ! reviewer -> relative load
+ (UArray (Int, Int) Wt) -- ! (reviewer, proposal) -> pref
+ deriving Eq
+
+instance Show PMInstance where
+ show (PMInstance numRvrs numProps loadA prefA) =
+ let theRvrs = [0..numRvrs-1]; theProps = [0..numProps-1] in
+ "Instance with " ++ show numRvrs ++ " reviewers and " ++ show numProps ++ " proposals:\n" ++ formatTable (
+ ( "" : map (\i -> "R#" ++ show i ) theRvrs) :
+ ( "RLoad" : map (\i -> show (loadA ! i) ) theRvrs) :
+ map (\j -> ("P#" ++ show j) : map (\i -> show (prefA ! (i, j))) theRvrs) theProps
+ )
+
+type PMatching = [(Int, Int)]
+
\ No newline at end of file