using System.Collections.Generic;
public static void Main()
List<Tuple<int, int>> serayenPenaltyData = new List<Tuple<int, int>>();
List<Tuple<int, int>> nerdmanPenaltyData = new List<Tuple<int, int>>();
serayenPenaltyData.Add( new Tuple<int, int>( 13- 0, 0 ) );
serayenPenaltyData.Add( new Tuple<int, int>( 22-13, 350 ) );
serayenPenaltyData.Add( new Tuple<int, int>( 32-22, 1000 ) );
serayenPenaltyData.Add( new Tuple<int, int>( 60-32, 2000 ) );
serayenPenaltyData.Add( new Tuple<int, int>( 80-60, 5000 ) );
nerdmanPenaltyData.Add( new Tuple<int, int>( 5- 0, 0 ) );
nerdmanPenaltyData.Add( new Tuple<int, int>( 10- 5, 100 ) );
nerdmanPenaltyData.Add( new Tuple<int, int>( 20-10, 500 ) );
nerdmanPenaltyData.Add( new Tuple<int, int>( 40-20, 1000 ) );
nerdmanPenaltyData.Add( new Tuple<int, int>( 60-40, 2000 ) );
nerdmanPenaltyData.Add( new Tuple<int, int>( 80-60, 5000 ) );
Console.WriteLine( "Calculated penalty for {0} cuts:\n - Nerdman: {1:mm\\:ss\\.fff}\n - Serayen: {2:mm\\:ss\\.fff}",
CalculateCutPenalty( 31, nerdmanPenaltyData ),
CalculateCutPenalty( 31, serayenPenaltyData ) );
Console.WriteLine( "Calculated penalty for {0} cuts:\n - Nerdman: {1:mm\\:ss\\.fff}\n - Serayen: {2:mm\\:ss\\.fff}",
CalculateCutPenalty( 36, nerdmanPenaltyData ),
CalculateCutPenalty( 36, serayenPenaltyData ) );
Console.WriteLine( "Calculated penalty for {0} cuts:\n - Nerdman: {1:mm\\:ss\\.fff}\n - Serayen: {2:mm\\:ss\\.fff}",
CalculateCutPenalty( 61, nerdmanPenaltyData ),
CalculateCutPenalty( 61, serayenPenaltyData ) );
private static TimeSpan CalculateCutPenalty( int cuts, List<Tuple<int, int>> penaltyData )
TimeSpan timePenalty = TimeSpan.Zero;
int cutsRemaining = cuts;
foreach( var cut in penaltyData )
if( cutsRemaining < cut.Item1 )
timePenalty += TimeSpan.FromMilliseconds( cutsRemaining * cut.Item2 );
timePenalty += TimeSpan.FromMilliseconds( cut.Item1 * cut.Item2 );
cutsRemaining -= cut.Item1;