結果

問題 No.3049 Contest Coordinator
ユーザー kakel-san
提出日時 2025-03-07 23:09:15
言語 C#
(.NET 8.0.404)
結果
AC  
実行時間 341 ms / 2,000 ms
コード長 1,285 bytes
コンパイル時間 8,721 ms
コンパイル使用メモリ 171,084 KB
実行使用メモリ 125,948 KB
最終ジャッジ日時 2025-03-07 23:09:45
合計ジャッジ時間 22,665 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 58
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (105 ミリ秒)。
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #

using System;
using static System.Console;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static int NN => int.Parse(ReadLine());
    static int[] NList => ReadLine().Split().Select(int.Parse).ToArray();
    public static void Main()
    {
        Solve();
    }
    static void Solve()
    {
        var c = NList;
        var (n, t, x, y) = (c[0], c[1], c[2], c[3]);
        var d = NList;
        Array.Sort(d);
        WriteLine(string.Join(" ", Diff(n, t, x, y, d)));
    }
    static long[] Diff(int n, int t, int x, int y, int[] d)
    {
        var seq = new List<int>();
        var tmp = 1;
        for (var i = 1; i < n; ++i)
        {
            if (d[i] - d[i - 1] > t)
            {
                seq.Add(tmp);
                tmp = 1;
            }
            else ++tmp;
        }
        seq.Add(tmp);
        seq.Sort((l, r) => r.CompareTo(l));
        var ans = new long[n];
        var pos = 1;
        tmp = seq[0];
        for (var i = 0; i < n; ++i)
        {
            while (pos < seq.Count && tmp <= i)
            {
                tmp += seq[pos];
                ++pos;
            }
            ans[i] = (pos - 1L) * Math.Min(x, y);
        }
        return ans;
    }
}
0