Submission #44957520


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 = true };
        Console.SetOut(sw);
        Solve();
        Console.Out.Flush();
    }

    public static void Solve()
    {
        var N = Scanner.Scan<int>();
        var V = new (long X, long Y, long Z)[N];
        var G = new List<(long X, long Z)>();
        long zs = 0;
        long got = 0;
        for (var i = 0; i < N; i++)
        {
            var (x, y, z) = Scanner.Scan<long, long, long>();
            V[i] = (x, y, z);
            zs += z;
            var v = (Math.Max(0, y - x) + 1) / 2;
            if (v > 0) G.Add((v, z));
            else got += z;
        }

        var req = (zs + 1) / 2;
        var dp = new Dictionary<long, long>();
        dp[got] = 0;

        const long Inf = (long)1e18;
        foreach (var (x, z) in G)
        {
            var ndp = new Dictionary<long, long>(dp);
            foreach (var (s, v) in dp)
            {
                if (!ndp.ContainsKey(s + z)) ndp[s + z] = Inf;
                ndp[s + z] = Math.Min(ndp[s + z], v + x);
            }
            dp = ndp;
        }

        var answer = dp.Where(x => x.Key >= req).Min(x => x.Value);
        Console.WriteLine(answer);
    }

    public static class Scanner
    {
        public static T Scan<T>() where T : IConvertible => Convert<T>(ScanStringArray()[0]);
        public static (T1, T2) Scan<T1, T2>() where T1 : IConvertible where T2 : IConvertible
        {
            var input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]));
        }
        public static (T1, T2, T3) Scan<T1, T2, T3>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible
        {
            var input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[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 input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[2]), Convert<T4>(input[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 input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[2]), Convert<T4>(input[3]), Convert<T5>(input[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 input = ScanStringArray();
            return (Convert<T1>(input[0]), Convert<T2>(input[1]), Convert<T3>(input[2]), Convert<T4>(input[3]), Convert<T5>(input[4]), Convert<T6>(input[5]));
        }
        public static IEnumerable<T> ScanEnumerable<T>() where T : IConvertible => ScanStringArray().Select(Convert<T>);
        private static string[] ScanStringArray()
        {
            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 - President
User AconCavy
Language C# 11.0 (.NET 7.0.7)
Score 400
Code Size 3816 Byte
Status AC
Exec Time 586 ms
Memory 68752 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 4
AC × 31
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 02_max_00.txt, 03_hack_00.txt, 03_hack_01.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 53 ms 26792 KiB
00_sample_01.txt AC 58 ms 26440 KiB
00_sample_02.txt AC 57 ms 26672 KiB
00_sample_03.txt AC 58 ms 26580 KiB
01_random_00.txt AC 79 ms 34576 KiB
01_random_01.txt AC 60 ms 30016 KiB
01_random_02.txt AC 217 ms 52004 KiB
01_random_03.txt AC 390 ms 61228 KiB
01_random_04.txt AC 134 ms 40452 KiB
01_random_05.txt AC 232 ms 39308 KiB
01_random_06.txt AC 72 ms 30996 KiB
01_random_07.txt AC 586 ms 56220 KiB
01_random_08.txt AC 66 ms 26904 KiB
01_random_09.txt AC 141 ms 34976 KiB
01_random_10.txt AC 143 ms 40668 KiB
01_random_11.txt AC 441 ms 52276 KiB
01_random_12.txt AC 72 ms 32800 KiB
01_random_13.txt AC 84 ms 34068 KiB
01_random_14.txt AC 75 ms 31404 KiB
01_random_15.txt AC 54 ms 26424 KiB
01_random_16.txt AC 89 ms 31412 KiB
01_random_17.txt AC 458 ms 51868 KiB
01_random_18.txt AC 100 ms 32624 KiB
01_random_19.txt AC 430 ms 57104 KiB
01_random_20.txt AC 93 ms 32824 KiB
01_random_21.txt AC 516 ms 68752 KiB
01_random_22.txt AC 209 ms 40748 KiB
01_random_23.txt AC 54 ms 28932 KiB
02_max_00.txt AC 63 ms 26876 KiB
03_hack_00.txt AC 52 ms 26676 KiB
03_hack_01.txt AC 369 ms 55196 KiB