Please sign in first.
Submission #47306674
Source Code Expand
<?php
// 近いうちに動かすところにはできるだけ載せない
// 近いうちに動かすところの評価を非線形にする
// まとめて全部移動させるのではなく近いうちに動かす必要のあるものは分割して移動する
// 得点計算して乱択する
// さらに高速化する。累計で7倍ぐらい速くなった。
[$N, $M] = ints();
for($i = 0; $i < $M; $i++){
$row = ints();
$_stacks[] = $row;
foreach($row as $c => $v){
$_pos[$v] = [$i, $c];
}
}
$ansArray = []; $powArray = [];
$time = microtime(true);
for($i = 0; $i < 200; $i++){
$pi[$i] = 0.88 ** $i;
}
for($x = 0; microtime(true)-$time < 1.9; $x++){
$stacks = $_stacks;
$pos = $_pos;
$pow = 0;
$ans = [];
$splitLimit = random_int(15, 20);// 17;
for($i = 1; $i <= $N; $i++){
[$r, $c] = $pos[$i];
if(count($stacks[$r])!=$c+1){
// 末尾の要素でなければ後ろのものを別のところによける
$removeArray = [];
$removeArray[] = $stacks[$r][$c+1];
$pow++;
$pow += count($stacks[$r])-$c-1;
for($j = $c+2, $J = count($stacks[$r])-1; $j < $J; ++$j){
if($stacks[$r][$j] < $i+$splitLimit){
$removeArray[] = $stacks[$r][$j+1];
$pow++;
}
}
$removeArray = array_reverse($removeArray);
foreach($removeArray as $remove){
$counts = [];
$I = [];
for($j = 0; $j < 10; $j++){
$counts[$j] = random_int(0,100)*0.001;
$I[$j] = $j;
}
$D = 100;
for($j = $i+1, $J = min($i+$D,$N); $j <= $J; ++$j){
$counts[$pos[$j][0]]+=$pi[$j-$i];
}
array_multisort($counts, $I);
$j = $I[$I[0]==$r];
$ans[] = [$remove, $j+1];
$removed = array_splice($stacks[$r], $pos[$remove][1]);
foreach($removed as $p => $num){
$pos[$num] = [$j, count($stacks[$j])+$p];
}
$stacks[$j] = array_merge($stacks[$j], $removed);
}
}
array_pop($stacks[$r]);
$ans[] = [$i, 0];
}
$ansArray[] = $ans;
$powArray[] = $pow;
}
array_multisort($powArray, $ansArray);
foreach($ansArray[0] as $row){
echo implode(" ", $row),"\n";
}
error_log("$x");
function qfind($n){
global $pos;
return $pos[$n];
}
function str(){return trim(fgets(STDIN));}
function ints($n = false){
if($n===false){
$str = trim(fgets(STDIN));if($str == '')return [];
return array_map('intval',explode(' ',$str));
}else{$ret = [];for($i = 0; $i < $n; $i++)foreach(array_map('intval',explode(' ',trim(fgets(STDIN)))) as $j => $v)$ret[$j][] = $v;return $ret;}
}
function int(){return intval(trim(fgets(STDIN)));}
function chmax(&$a,$b){if($a<$b){$a=$b;return 1;}return 0;}
function chmin(&$a,$b){if($a>$b){$a=$b;return 1;}return 0;}
function isqrt($n):int{$res=intval(sqrt($n))+1;while($res*$res>$n)$res--;return $res;}
function popcount($x){$c=0;while($x){$x&=$x-1;++$c;}return$c;}
function swap(&$a,&$b){$tmp=$a;$a=$b;$b=$tmp;}
function o(...$val){
if(count($val)==1)$val=array_shift($val);
echo debug_backtrace()[0]['line'].")";
if(is_array($val)){
if(count($val) == 0)echo "empty array\n";
elseif(!is_array(current($val)))echo "array: ",implode(" ", addIndex($val)),"\n";
else{
echo "array:array\n";
if(isCleanArray($val))foreach($val as $row)echo implode(" ", addIndex($row)),"\n";
else foreach($val as $i => $row)echo "[".$i."] ".implode(" ", addIndex($row)),"\n";
}
}else echo $val."\n";
}
function addIndex($val){if(!isCleanArray($val)){$val = array_map(function($k, $v){return $k.":".$v;}, array_keys($val), $val);}return $val;}
function isCleanArray($array){$clean=true;$i = 0;foreach($array as $k=>$v){if($k != $i++)$clean = false;}return $clean;}
// 座圧対象の配列 -> [圧縮された配列,復元用のMap,圧縮用のMap]
function atsu($array){$a = array_flip($array);$fuku=array_flip($a);sort($fuku);$atsu = array_flip($fuku);foreach($array as $i=>$val)$array[$i]=$atsu[$val];return [$array, $fuku, $atsu];}
function atsu1($array){$a=array_flip($array);$fuku=array_flip($a);sort($fuku);array_unshift($fuku,0);array_unshift($fuku,0);unset($fuku[0]);$atsu=array_flip($fuku);foreach($array as $i=>$val)$array[$i]=$atsu[$val];return [$array, $fuku, $atsu];}
function median($a){sort($a);$n=count($a);return $n%2?$a[($n-1)/2]:($a[$n/2-1]+$a[$n/2])/2;}
function gcdAll($array){$gcd=$array[0];for($i=1,$I=count($array);$i<$I;++$i){$gcd=gcd($gcd,$array[$i]);}return $gcd;}
function gcd($m, $n){if(!$n)return $m;return gcd($n, $m % $n);}
function lcmAll($array){$lcm=$array[0];for($i=1,$I=count($array);$i<$I;++$i){$lcm=lcm($lcm,$array[$i]);}return $lcm;}
function lcm($a, $b) {return $a / gcd($a, $b) * $b;}
function loadTree($N = false){
if($N === false)$N = $GLOBALS['N'];
return loadGraph($N, $N-1);
}
function loadGraph($N = false, $M = false, $both = true){
if($N === false)$N = $GLOBALS['N'];
if($M === false)$M = $GLOBALS['M'];
$G = array_fill(1, $N, []);
for($i = 0; $i < $M; $i++){
$values = ints();
if(count($values) == 2){
list($a, $b) = $values;
if($both == 0){
$G[$a][] = $b;
}elseif($both == 1){
$G[$a][] = $b;
$G[$b][] = $a;
}else{
$G[$b][] = $a;
}
}else{
list($a, $b, $d) = $values;
if($both == 0){
$G[$a][] = [$b, $d];
}elseif($both == 1){
$G[$a][] = [$b, $d];
$G[$b][] = [$a, $d];
}else{
$G[$b][] = [$a, $d];
}
}
}
return $G;
}
Submission Info
| Submission Time | |
|---|---|
| Task | A - Stack of Boxes |
| User | yoichiro |
| Language | PHP (php 8.2.8) |
| Score | 1389017 |
| Code Size | 5960 Byte |
| Status | AC |
| Exec Time | 1926 ms |
| Memory | 164712 KiB |
Judge Result
| Set Name | test_ALL | ||
|---|---|---|---|
| Score / Max Score | 1389017 / 1500000 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| test_ALL | test_0000.txt, test_0001.txt, test_0002.txt, test_0003.txt, test_0004.txt, test_0005.txt, test_0006.txt, test_0007.txt, test_0008.txt, test_0009.txt, test_0010.txt, test_0011.txt, test_0012.txt, test_0013.txt, test_0014.txt, test_0015.txt, test_0016.txt, test_0017.txt, test_0018.txt, test_0019.txt, test_0020.txt, test_0021.txt, test_0022.txt, test_0023.txt, test_0024.txt, test_0025.txt, test_0026.txt, test_0027.txt, test_0028.txt, test_0029.txt, test_0030.txt, test_0031.txt, test_0032.txt, test_0033.txt, test_0034.txt, test_0035.txt, test_0036.txt, test_0037.txt, test_0038.txt, test_0039.txt, test_0040.txt, test_0041.txt, test_0042.txt, test_0043.txt, test_0044.txt, test_0045.txt, test_0046.txt, test_0047.txt, test_0048.txt, test_0049.txt, test_0050.txt, test_0051.txt, test_0052.txt, test_0053.txt, test_0054.txt, test_0055.txt, test_0056.txt, test_0057.txt, test_0058.txt, test_0059.txt, test_0060.txt, test_0061.txt, test_0062.txt, test_0063.txt, test_0064.txt, test_0065.txt, test_0066.txt, test_0067.txt, test_0068.txt, test_0069.txt, test_0070.txt, test_0071.txt, test_0072.txt, test_0073.txt, test_0074.txt, test_0075.txt, test_0076.txt, test_0077.txt, test_0078.txt, test_0079.txt, test_0080.txt, test_0081.txt, test_0082.txt, test_0083.txt, test_0084.txt, test_0085.txt, test_0086.txt, test_0087.txt, test_0088.txt, test_0089.txt, test_0090.txt, test_0091.txt, test_0092.txt, test_0093.txt, test_0094.txt, test_0095.txt, test_0096.txt, test_0097.txt, test_0098.txt, test_0099.txt, test_0100.txt, test_0101.txt, test_0102.txt, test_0103.txt, test_0104.txt, test_0105.txt, test_0106.txt, test_0107.txt, test_0108.txt, test_0109.txt, test_0110.txt, test_0111.txt, test_0112.txt, test_0113.txt, test_0114.txt, test_0115.txt, test_0116.txt, test_0117.txt, test_0118.txt, test_0119.txt, test_0120.txt, test_0121.txt, test_0122.txt, test_0123.txt, test_0124.txt, test_0125.txt, test_0126.txt, test_0127.txt, test_0128.txt, test_0129.txt, test_0130.txt, test_0131.txt, test_0132.txt, test_0133.txt, test_0134.txt, test_0135.txt, test_0136.txt, test_0137.txt, test_0138.txt, test_0139.txt, test_0140.txt, test_0141.txt, test_0142.txt, test_0143.txt, test_0144.txt, test_0145.txt, test_0146.txt, test_0147.txt, test_0148.txt, test_0149.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| test_0000.txt | AC | 1920 ms | 160476 KiB |
| test_0001.txt | AC | 1924 ms | 159964 KiB |
| test_0002.txt | AC | 1923 ms | 157472 KiB |
| test_0003.txt | AC | 1923 ms | 159164 KiB |
| test_0004.txt | AC | 1923 ms | 157496 KiB |
| test_0005.txt | AC | 1923 ms | 161164 KiB |
| test_0006.txt | AC | 1924 ms | 158172 KiB |
| test_0007.txt | AC | 1922 ms | 160772 KiB |
| test_0008.txt | AC | 1923 ms | 160632 KiB |
| test_0009.txt | AC | 1922 ms | 159684 KiB |
| test_0010.txt | AC | 1922 ms | 158304 KiB |
| test_0011.txt | AC | 1923 ms | 162956 KiB |
| test_0012.txt | AC | 1925 ms | 158652 KiB |
| test_0013.txt | AC | 1922 ms | 161348 KiB |
| test_0014.txt | AC | 1923 ms | 162116 KiB |
| test_0015.txt | AC | 1922 ms | 157496 KiB |
| test_0016.txt | AC | 1923 ms | 161316 KiB |
| test_0017.txt | AC | 1922 ms | 163020 KiB |
| test_0018.txt | AC | 1922 ms | 159532 KiB |
| test_0019.txt | AC | 1922 ms | 158168 KiB |
| test_0020.txt | AC | 1923 ms | 158792 KiB |
| test_0021.txt | AC | 1924 ms | 161684 KiB |
| test_0022.txt | AC | 1921 ms | 160504 KiB |
| test_0023.txt | AC | 1923 ms | 159136 KiB |
| test_0024.txt | AC | 1923 ms | 159800 KiB |
| test_0025.txt | AC | 1922 ms | 158760 KiB |
| test_0026.txt | AC | 1921 ms | 160352 KiB |
| test_0027.txt | AC | 1922 ms | 158608 KiB |
| test_0028.txt | AC | 1921 ms | 161460 KiB |
| test_0029.txt | AC | 1922 ms | 158532 KiB |
| test_0030.txt | AC | 1922 ms | 156684 KiB |
| test_0031.txt | AC | 1921 ms | 158112 KiB |
| test_0032.txt | AC | 1924 ms | 157724 KiB |
| test_0033.txt | AC | 1926 ms | 160936 KiB |
| test_0034.txt | AC | 1922 ms | 160436 KiB |
| test_0035.txt | AC | 1923 ms | 157128 KiB |
| test_0036.txt | AC | 1922 ms | 158072 KiB |
| test_0037.txt | AC | 1925 ms | 160696 KiB |
| test_0038.txt | AC | 1924 ms | 157436 KiB |
| test_0039.txt | AC | 1923 ms | 164196 KiB |
| test_0040.txt | AC | 1923 ms | 161564 KiB |
| test_0041.txt | AC | 1924 ms | 161900 KiB |
| test_0042.txt | AC | 1921 ms | 159444 KiB |
| test_0043.txt | AC | 1923 ms | 160952 KiB |
| test_0044.txt | AC | 1923 ms | 157152 KiB |
| test_0045.txt | AC | 1922 ms | 160400 KiB |
| test_0046.txt | AC | 1921 ms | 157876 KiB |
| test_0047.txt | AC | 1923 ms | 156552 KiB |
| test_0048.txt | AC | 1922 ms | 156408 KiB |
| test_0049.txt | AC | 1923 ms | 159976 KiB |
| test_0050.txt | AC | 1923 ms | 157636 KiB |
| test_0051.txt | AC | 1923 ms | 161316 KiB |
| test_0052.txt | AC | 1922 ms | 160464 KiB |
| test_0053.txt | AC | 1924 ms | 158068 KiB |
| test_0054.txt | AC | 1922 ms | 161084 KiB |
| test_0055.txt | AC | 1922 ms | 159272 KiB |
| test_0056.txt | AC | 1922 ms | 158348 KiB |
| test_0057.txt | AC | 1923 ms | 158828 KiB |
| test_0058.txt | AC | 1922 ms | 158452 KiB |
| test_0059.txt | AC | 1921 ms | 157880 KiB |
| test_0060.txt | AC | 1923 ms | 155744 KiB |
| test_0061.txt | AC | 1922 ms | 159388 KiB |
| test_0062.txt | AC | 1921 ms | 160068 KiB |
| test_0063.txt | AC | 1922 ms | 161704 KiB |
| test_0064.txt | AC | 1924 ms | 158044 KiB |
| test_0065.txt | AC | 1923 ms | 159440 KiB |
| test_0066.txt | AC | 1922 ms | 160540 KiB |
| test_0067.txt | AC | 1921 ms | 159328 KiB |
| test_0068.txt | AC | 1923 ms | 161868 KiB |
| test_0069.txt | AC | 1922 ms | 158352 KiB |
| test_0070.txt | AC | 1922 ms | 158884 KiB |
| test_0071.txt | AC | 1921 ms | 160068 KiB |
| test_0072.txt | AC | 1921 ms | 162524 KiB |
| test_0073.txt | AC | 1922 ms | 159240 KiB |
| test_0074.txt | AC | 1922 ms | 159528 KiB |
| test_0075.txt | AC | 1922 ms | 161040 KiB |
| test_0076.txt | AC | 1924 ms | 162260 KiB |
| test_0077.txt | AC | 1924 ms | 162024 KiB |
| test_0078.txt | AC | 1922 ms | 159596 KiB |
| test_0079.txt | AC | 1922 ms | 156612 KiB |
| test_0080.txt | AC | 1922 ms | 159872 KiB |
| test_0081.txt | AC | 1924 ms | 160748 KiB |
| test_0082.txt | AC | 1925 ms | 159360 KiB |
| test_0083.txt | AC | 1923 ms | 159892 KiB |
| test_0084.txt | AC | 1924 ms | 158868 KiB |
| test_0085.txt | AC | 1923 ms | 160540 KiB |
| test_0086.txt | AC | 1922 ms | 161576 KiB |
| test_0087.txt | AC | 1924 ms | 161516 KiB |
| test_0088.txt | AC | 1922 ms | 156128 KiB |
| test_0089.txt | AC | 1925 ms | 158304 KiB |
| test_0090.txt | AC | 1925 ms | 160004 KiB |
| test_0091.txt | AC | 1924 ms | 159380 KiB |
| test_0092.txt | AC | 1921 ms | 159832 KiB |
| test_0093.txt | AC | 1923 ms | 160636 KiB |
| test_0094.txt | AC | 1923 ms | 157808 KiB |
| test_0095.txt | AC | 1923 ms | 160644 KiB |
| test_0096.txt | AC | 1922 ms | 157476 KiB |
| test_0097.txt | AC | 1923 ms | 159260 KiB |
| test_0098.txt | AC | 1922 ms | 157640 KiB |
| test_0099.txt | AC | 1923 ms | 158900 KiB |
| test_0100.txt | AC | 1923 ms | 157460 KiB |
| test_0101.txt | AC | 1922 ms | 160592 KiB |
| test_0102.txt | AC | 1921 ms | 158608 KiB |
| test_0103.txt | AC | 1923 ms | 158576 KiB |
| test_0104.txt | AC | 1922 ms | 163472 KiB |
| test_0105.txt | AC | 1923 ms | 160448 KiB |
| test_0106.txt | AC | 1922 ms | 157808 KiB |
| test_0107.txt | AC | 1923 ms | 160356 KiB |
| test_0108.txt | AC | 1922 ms | 160764 KiB |
| test_0109.txt | AC | 1924 ms | 159800 KiB |
| test_0110.txt | AC | 1924 ms | 164712 KiB |
| test_0111.txt | AC | 1923 ms | 161236 KiB |
| test_0112.txt | AC | 1922 ms | 154772 KiB |
| test_0113.txt | AC | 1922 ms | 156932 KiB |
| test_0114.txt | AC | 1923 ms | 162336 KiB |
| test_0115.txt | AC | 1923 ms | 161300 KiB |
| test_0116.txt | AC | 1922 ms | 158304 KiB |
| test_0117.txt | AC | 1921 ms | 158488 KiB |
| test_0118.txt | AC | 1921 ms | 160228 KiB |
| test_0119.txt | AC | 1923 ms | 159768 KiB |
| test_0120.txt | AC | 1923 ms | 160152 KiB |
| test_0121.txt | AC | 1923 ms | 161172 KiB |
| test_0122.txt | AC | 1922 ms | 156664 KiB |
| test_0123.txt | AC | 1923 ms | 156716 KiB |
| test_0124.txt | AC | 1921 ms | 155576 KiB |
| test_0125.txt | AC | 1922 ms | 162232 KiB |
| test_0126.txt | AC | 1922 ms | 160692 KiB |
| test_0127.txt | AC | 1922 ms | 158272 KiB |
| test_0128.txt | AC | 1924 ms | 160360 KiB |
| test_0129.txt | AC | 1923 ms | 163848 KiB |
| test_0130.txt | AC | 1923 ms | 160588 KiB |
| test_0131.txt | AC | 1922 ms | 156948 KiB |
| test_0132.txt | AC | 1923 ms | 160044 KiB |
| test_0133.txt | AC | 1922 ms | 160568 KiB |
| test_0134.txt | AC | 1922 ms | 157652 KiB |
| test_0135.txt | AC | 1923 ms | 158872 KiB |
| test_0136.txt | AC | 1923 ms | 163216 KiB |
| test_0137.txt | AC | 1922 ms | 161400 KiB |
| test_0138.txt | AC | 1922 ms | 159304 KiB |
| test_0139.txt | AC | 1922 ms | 159880 KiB |
| test_0140.txt | AC | 1923 ms | 163196 KiB |
| test_0141.txt | AC | 1922 ms | 161140 KiB |
| test_0142.txt | AC | 1923 ms | 157268 KiB |
| test_0143.txt | AC | 1923 ms | 159960 KiB |
| test_0144.txt | AC | 1921 ms | 159216 KiB |
| test_0145.txt | AC | 1926 ms | 160204 KiB |
| test_0146.txt | AC | 1922 ms | 160296 KiB |
| test_0147.txt | AC | 1925 ms | 162476 KiB |
| test_0148.txt | AC | 1923 ms | 160004 KiB |
| test_0149.txt | AC | 1922 ms | 159032 KiB |