Submission #37157390
Source Code Expand
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
namespace Tasks
{
public class D
{
public static void Main()
{
using var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
Console.SetOut(sw);
Solve();
Console.Out.Flush();
}
public static void Solve()
{
var (N, K, D) = Scanner.Scan<int, int, int>();
var A = Scanner.ScanEnumerable<long>().ToArray();
var dp = new bool[N + 1, K + 1, D];
dp[0, 0, 0] = true;
var dpMax = new long[N + 1, K + 1, D];
const long inf = (long)1e18;
for (var i = 0; i <= N; i++)
{
for (var k = 0; k <= K; k++)
{
for (var d = 0; d < D; d++)
{
dpMax[i, k, d] = -inf;
}
}
}
dpMax[0, 0, 0] = 0;
for (var i = 0; i < N; i++)
{
for (var k = 0; k <= K; k++)
{
for (var u = 0; u < D; u++)
{
var v = (u + A[i]) % D;
dp[i + 1, k, u] |= dp[i, k, u];
dpMax[i + 1, k, u] = Math.Max(dpMax[i + 1, k, u], dpMax[i, k, u]);
if (k + 1 <= K)
{
dp[i + 1, k + 1, v] |= dp[i, k, u];
dpMax[i + 1, k + 1, v] = Math.Max(dpMax[i + 1, k + 1, v], dpMax[i, k, u] + A[i]);
}
}
}
}
var answer = dp[N, K, 0] ? dpMax[N, K, 0] : -1;
Console.WriteLine(answer);
}
public static class Scanner
{
public static T Scan<T>() where T : IConvertible => Convert<T>(Scan()[0]);
public static (T1, T2) Scan<T1, T2>() where T1 : IConvertible where T2 : IConvertible
{
var buffer = Scan();
return (Convert<T1>(buffer[0]), Convert<T2>(buffer[1]));
}
public static (T1, T2, T3) Scan<T1, T2, T3>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible
{
var buffer = Scan();
return (Convert<T1>(buffer[0]), Convert<T2>(buffer[1]), Convert<T3>(buffer[2]));
}
public static (T1, T2, T3, T4) Scan<T1, T2, T3, T4>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible
{
var buffer = Scan();
return (Convert<T1>(buffer[0]), Convert<T2>(buffer[1]), Convert<T3>(buffer[2]), Convert<T4>(buffer[3]));
}
public static (T1, T2, T3, T4, T5) Scan<T1, T2, T3, T4, T5>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible
{
var buffer = Scan();
return (Convert<T1>(buffer[0]), Convert<T2>(buffer[1]), Convert<T3>(buffer[2]), Convert<T4>(buffer[3]), Convert<T5>(buffer[4]));
}
public static (T1, T2, T3, T4, T5, T6) Scan<T1, T2, T3, T4, T5, T6>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible where T6 : IConvertible
{
var buffer = Scan();
return (Convert<T1>(buffer[0]), Convert<T2>(buffer[1]), Convert<T3>(buffer[2]), Convert<T4>(buffer[3]), Convert<T5>(buffer[4]), Convert<T6>(buffer[5]));
}
public static IEnumerable<T> ScanEnumerable<T>() where T : IConvertible => Scan().Select(Convert<T>);
private static string[] Scan()
{
var line = Console.ReadLine()?.Trim() ?? string.Empty;
return string.IsNullOrEmpty(line) ? Array.Empty<string>() : line.Split(' ');
}
private static T Convert<T>(string value) where T : IConvertible => (T)System.Convert.ChangeType(value, typeof(T));
}
}
}
Submission Info
| Submission Time |
|
| Task |
D - Max Multiple |
| User |
AconCavy |
| Language |
C# (.NET Core 3.1.201) |
| Score |
400 |
| Code Size |
4357 Byte |
| Status |
AC |
| Exec Time |
116 ms |
| Memory |
36860 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
400 / 400 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_srnd_00.txt, 01_srnd_01.txt, 01_srnd_02.txt, 01_srnd_03.txt, 01_srnd_04.txt, 01_srnd_05.txt, 01_srnd_06.txt, 01_srnd_07.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 02_rnd_05.txt, 02_rnd_06.txt, 02_rnd_07.txt, 03_max_00.txt, 03_max_01.txt, 03_max_02.txt, 04_obvious_00.txt, 04_obvious_01.txt, 04_obvious_02.txt, 04_obvious_03.txt, 05_hand_00.txt, 05_hand_01.txt, 05_hand_02.txt, 05_hand_03.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
79 ms |
27712 KiB |
| 00_sample_01.txt |
AC |
79 ms |
28260 KiB |
| 01_srnd_00.txt |
AC |
79 ms |
27932 KiB |
| 01_srnd_01.txt |
AC |
81 ms |
27976 KiB |
| 01_srnd_02.txt |
AC |
82 ms |
27972 KiB |
| 01_srnd_03.txt |
AC |
75 ms |
27692 KiB |
| 01_srnd_04.txt |
AC |
80 ms |
27944 KiB |
| 01_srnd_05.txt |
AC |
77 ms |
27964 KiB |
| 01_srnd_06.txt |
AC |
76 ms |
27872 KiB |
| 01_srnd_07.txt |
AC |
97 ms |
27884 KiB |
| 02_rnd_00.txt |
AC |
91 ms |
31388 KiB |
| 02_rnd_01.txt |
AC |
81 ms |
28312 KiB |
| 02_rnd_02.txt |
AC |
99 ms |
32096 KiB |
| 02_rnd_03.txt |
AC |
96 ms |
31540 KiB |
| 02_rnd_04.txt |
AC |
88 ms |
29072 KiB |
| 02_rnd_05.txt |
AC |
82 ms |
28552 KiB |
| 02_rnd_06.txt |
AC |
83 ms |
28112 KiB |
| 02_rnd_07.txt |
AC |
97 ms |
32940 KiB |
| 03_max_00.txt |
AC |
116 ms |
36808 KiB |
| 03_max_01.txt |
AC |
112 ms |
36860 KiB |
| 03_max_02.txt |
AC |
113 ms |
36852 KiB |
| 04_obvious_00.txt |
AC |
87 ms |
28828 KiB |
| 04_obvious_01.txt |
AC |
84 ms |
27972 KiB |
| 04_obvious_02.txt |
AC |
94 ms |
27972 KiB |
| 04_obvious_03.txt |
AC |
100 ms |
28132 KiB |
| 05_hand_00.txt |
AC |
96 ms |
32572 KiB |
| 05_hand_01.txt |
AC |
88 ms |
30312 KiB |
| 05_hand_02.txt |
AC |
102 ms |
30236 KiB |
| 05_hand_03.txt |
AC |
90 ms |
30632 KiB |