using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Collections;
public
class
GFG
{
static
int
max_value(
int
[,] array,
int
M,
int
K,
int
N)
{
int
[] time =
new
int
[M];
for
(
int
i = 0; i < N; i++)
{
time[array[i, 0]] = array[i, 1];
}
int
[,] dp =
new
int
[M, 2];
dp[0, 0] = 0;
dp[0, 1] = time[0];
for
(
int
i = 1; i < M; i++)
{
dp[i, 0] = Math.Max(dp[i - 1, 0],
dp[i - 1, 1]);
dp[i, 1] = time[i];
if
(i - K >= 0)
{
dp[i, 1] += Math.Max(dp[i - K, 0],
dp[i - K, 1]);
}
}
return
Math.Max(dp[M - 1, 0], dp[M - 1, 1]);
}
public
static
void
Main(String[] args)
{
int
[,] array = { { 0, 10 },
{ 4, 110 },
{ 5, 30 } };
int
N = 3;
int
K = 4;
int
M = 6;
Console.WriteLine(max_value(array, M, K, N));
}
}