結果
問題 | No.165 四角で囲え! |
ユーザー | te-sh |
提出日時 | 2017-02-06 16:42:15 |
言語 | D (dmd 2.106.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,526 bytes |
コンパイル時間 | 958 ms |
コンパイル使用メモリ | 120,504 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-12 06:54:41 |
合計ジャッジ時間 | 6,923 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 211 ms
6,816 KB |
testcase_01 | AC | 1 ms
6,944 KB |
testcase_02 | AC | 1 ms
6,944 KB |
testcase_03 | AC | 1 ms
6,940 KB |
testcase_04 | AC | 1 ms
6,944 KB |
testcase_05 | AC | 301 ms
6,944 KB |
testcase_06 | AC | 63 ms
6,940 KB |
testcase_07 | AC | 1 ms
6,944 KB |
testcase_08 | AC | 1 ms
6,940 KB |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | AC | 285 ms
6,944 KB |
testcase_12 | AC | 395 ms
6,944 KB |
testcase_13 | AC | 414 ms
6,940 KB |
testcase_14 | AC | 402 ms
6,940 KB |
testcase_15 | AC | 385 ms
6,940 KB |
testcase_16 | AC | 419 ms
6,940 KB |
testcase_17 | AC | 379 ms
6,940 KB |
testcase_18 | AC | 450 ms
6,940 KB |
testcase_19 | AC | 390 ms
6,944 KB |
testcase_20 | AC | 380 ms
6,940 KB |
testcase_21 | AC | 372 ms
6,940 KB |
testcase_22 | AC | 379 ms
6,944 KB |
コンパイルメッセージ
Main.d(54): Deprecation: foreach: loop index implicitly converted from `size_t` to `int` Main.d(55): Deprecation: foreach: loop index implicitly converted from `size_t` to `int`
ソースコード
import std.algorithm, std.conv, std.range, std.stdio, std.string; import std.typecons; // Tuple, Nullable, BigFlags void main() { auto rd1 = readln.split, n = rd1[0].to!size_t, b = rd1[1].to!int; auto pi = n.iota.map!(_ => readln.split.to!(int[])).map!(rd2 => point(rd2[0], rd2[1], rd2[2])).array; auto rd3 = compress(pi), cpi = rd3[0], nx = rd3[1], ny = rd3[2]; auto r = 0; foreach (x0; 0..nx-1) foreach (x1; x0+1..nx) { auto npi = new int[](ny), pti = new int[](ny); foreach (p; cpi) if (p.x >= x0 && p.x <= x1) { ++npi[p.y]; pti[p.y] += p.pt; } auto cnpi = new int[](ny + 1); auto cpti = new int[](ny + 1); foreach (i; ny.iota) { cnpi[i + 1] = npi[i] + cnpi[i]; cpti[i + 1] = pti[i] + cpti[i]; } auto y0 = 0, y1 = 0; while (y1 < ny) { if (y0 == y1) { ++y1; } else { auto pt = cpti[y1 + 1] - cpti[y0]; if (pt <= b) { auto np = cnpi[y1 + 1] - cnpi[y0]; r = max(r, np); ++y1; } else { ++y0; } } } } writeln(r); } auto compress(point[] pi) { auto xi = pi.map!"a.x".array, yi = pi.map!"a.y".array; xi.sort().uniq; yi.sort().uniq; int[int] mx, my; foreach (int i, x; xi) mx[x] = i; foreach (int i, y; yi) my[y] = i; foreach (ref p; pi) { p.x = mx[p.x]; p.y = my[p.y]; } return tuple(pi, xi.length, yi.length); } struct point { int x, y, pt; }