結果
問題 | No.2596 Christmas Eve (Heuristic ver.) |
ユーザー |
|
提出日時 | 2023-12-24 04:35:32 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 3 ms / 1,224 ms |
コード長 | 1,144 bytes |
コンパイル時間 | 1,748 ms |
コンパイル使用メモリ | 104,832 KB |
実行使用メモリ | 6,676 KB |
スコア | 2,382,430 |
最終ジャッジ日時 | 2023-12-24 04:35:46 |
合計ジャッジ時間 | 11,914 ms |
ジャッジサーバーID (参考情報) |
judge14 / judge13 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 125 |
ソースコード
import std.stdio; import std.string; import std.conv; import std.range; import std.algorithm.sorting; ulong[][] solve(int K, int[] A, int[] B, int[] C, int[] D, int[] E, int[] F){ ulong[][] result; auto trunk = E.length.iota.array.sort!((a, b) => E[a] < E[b]); auto tip = A.length.iota.array.sort!((a, b) => A[a] < A[b]); auto middle = C.length.iota.array.sort!((a, b) => C[a] < C[b]); int e = 0; int a = 0; int c = 0; for(int i = 0; i < K; i++){ while(E[trunk[e]] >= A[tip[a]]){ a++; } while(A[tip[a]] >= C[middle[c]]){ c++; } result ~= [tip[a] + 1, middle[c] + 1, middle[c + 1] + 1, trunk[e] + 1]; e++; a++; c += 2; } return result; } void main(){ auto input = readln.chomp.split.to!(int[]); auto N = input[0]; auto K = input[1]; auto A = readln.chomp.split.to!(int[]); auto B = readln.chomp.split.to!(int[]); auto C = readln.chomp.split.to!(int[]); auto D = readln.chomp.split.to!(int[]); auto E = readln.chomp.split.to!(int[]); auto F = readln.chomp.split.to!(int[]); foreach(s; solve(K, A, B, C, D, E, F)){ writeln(s.to!(string[]).join(" ")); } }