提出 #39883508


ソースコード 拡げる

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Numerics;

namespace Tasks
{
    public class E
    {
        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 (L, N1, N2) = Scanner.Scan<long, int, int>();
            var S1 = new S[N1];
            var S2 = new S[N2];
            for (var k = 0; k < 2; k++)
            {
                var (N, S) = k == 0 ? (N1, S1) : (N2, S2);
                long l = 0;
                for (var i = 0; i < N; i++)
                {
                    var (v, len) = Scanner.Scan<long, long>();
                    var r = l + len;
                    S[i] = new S(v, l, r);
                    l = r;
                }
            }

            long answer = 0;
            var (i1, i2) = (0, 0);
            while (i1 < N1 && i2 < N2)
            {
                if (S1[i1].V == S2[i2].V)
                {
                    var l = Math.Max(S1[i1].L, S2[i2].L);
                    var r = Math.Min(S1[i1].R, S2[i2].R);
                    answer += Math.Max(0, r - l);
                }

                if (S1[i1].R <= S2[i2].R) i1++;
                else i2++;
            }

            Console.WriteLine(answer);
        }

        public readonly struct S
        {
            public readonly long V;
            public readonly long L;
            public readonly long R;
            public S(long v, long l, long r) => (V, L, R) = (v, l, r);
        }

        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));
        }
    }
}

提出情報

提出日時
問題 E - 2xN Grid
ユーザ AconCavy
言語 C# (.NET Core 3.1.201)
得点 500
コード長 4236 Byte
結果 AC
実行時間 183 ms
メモリ 50932 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 3
AC × 36
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_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, 02_max_14.txt, 02_max_15.txt, 02_max_16.txt, 02_max_17.txt, 02_max_18.txt, 02_max_19.txt, 02_max_20.txt, 02_max_21.txt, 02_max_22.txt, 02_max_23.txt, 02_max_24.txt, 02_max_25.txt, 02_max_26.txt, 02_max_27.txt, 02_max_28.txt, 02_max_29.txt, 02_max_30.txt, 03_edge_31.txt, 03_edge_32.txt, 03_edge_33.txt, 03_edge_34.txt, 03_edge_35.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 80 ms 27372 KiB
00_sample_01.txt AC 81 ms 27256 KiB
00_sample_02.txt AC 84 ms 27596 KiB
01_random_03.txt AC 110 ms 45432 KiB
01_random_04.txt AC 149 ms 49732 KiB
01_random_05.txt AC 146 ms 49140 KiB
01_random_06.txt AC 134 ms 49156 KiB
01_random_07.txt AC 122 ms 46524 KiB
01_random_08.txt AC 120 ms 47700 KiB
01_random_09.txt AC 142 ms 49076 KiB
01_random_10.txt AC 142 ms 49308 KiB
01_random_11.txt AC 116 ms 44012 KiB
01_random_12.txt AC 98 ms 36236 KiB
01_random_13.txt AC 143 ms 49044 KiB
02_max_14.txt AC 180 ms 50716 KiB
02_max_15.txt AC 167 ms 50872 KiB
02_max_16.txt AC 164 ms 50468 KiB
02_max_17.txt AC 176 ms 50504 KiB
02_max_18.txt AC 172 ms 50684 KiB
02_max_19.txt AC 175 ms 50932 KiB
02_max_20.txt AC 183 ms 50692 KiB
02_max_21.txt AC 164 ms 50468 KiB
02_max_22.txt AC 177 ms 50796 KiB
02_max_23.txt AC 168 ms 50516 KiB
02_max_24.txt AC 171 ms 50640 KiB
02_max_25.txt AC 174 ms 50856 KiB
02_max_26.txt AC 168 ms 50684 KiB
02_max_27.txt AC 168 ms 50508 KiB
02_max_28.txt AC 170 ms 50452 KiB
02_max_29.txt AC 169 ms 50696 KiB
02_max_30.txt AC 166 ms 50808 KiB
03_edge_31.txt AC 91 ms 31592 KiB
03_edge_32.txt AC 102 ms 30564 KiB
03_edge_33.txt AC 75 ms 27528 KiB
03_edge_34.txt AC 80 ms 27532 KiB
03_edge_35.txt AC 165 ms 50584 KiB