結果

問題 No.3269 Leq-K Partition
ユーザー tobisatis
提出日時 2025-09-12 23:41:14
言語 C#
(.NET 8.0.404)
結果
TLE  
実行時間 -
コード長 1,400 bytes
コンパイル時間 14,847 ms
コンパイル使用メモリ 170,508 KB
実行使用メモリ 172,692 KB
最終ジャッジ日時 2025-09-12 23:46:30
合計ジャッジ時間 24,107 ms
ジャッジサーバーID
(参考情報)
judge4 / judge10
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 5 TLE * 1 -- * 21
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (110 ミリ秒)。
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #

#nullable enable

#region
var _input = Array.Empty<string>();
var _iter = 0;
string String()
{
    while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0);
    return _input[_iter++];
}
T I<T>() where T : IParsable<T> => T.Parse(String(), null);
#endregion

static T[] Range<T>(int n, Func<T> F) => Enumerable.Range(0, n).Select(_ => F()).ToArray();

var n = I<int>();
var az = Range(n, () => I<int>() - 1).AsSpan();
var bz = new int[n].AsSpan();
var c = 0;
var fz = new bool[n + 1].AsSpan();
var ans = new int[n];
ans.AsSpan().Fill(1);
var lz = Range(n, () => new List<int>());
for (var i = 1; i <= n; i++) lz[0].Add(i);
for (var i = 0; i < n; i++)
{
    var l = lz[i];
    if (l.Count == 0) continue;
    var max = 0;
    foreach (var j in l)
    {
        fz[j] = true;
        max = Math.Max(max, j);
    }
    var ms = n;
    for (var j = i; j < n; j++)
    {
        var a = az[j];
        if (++bz[a] == 1)
        {
            if (fz[c])
            {
                ans[c - 1]++;
                lz[j].Add(c);
                if (c == max)
                {
                    ms = j + 1;
                    break;
                }
            }
            c++;
        }
    }
    for (var j = i; j < ms; j++) bz[az[j]] = 0;
    c = 0;
    foreach (var j in l) fz[j] = false;
    lz[i] = new();
}
Console.WriteLine(string.Join(Environment.NewLine, ans));
0