結果

問題 No.2596 Christmas Eve (Heuristic ver.)
ユーザー lanegue
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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(" "));
  }
}
0