結果
| 問題 |
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(" "));
}
}