/
aavilyavdo
/
GoProtect-test
Обзор
Документация
Войти
/
aavilyavdo
/
GoProtect-test
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
index.php
75 строк
3 KB
aavilyavdo
create: config.php, update: index.php
06 май 2026, 13:18
Верифицирован
06 май 2026, 13:18
5efc87b
Код
Авторство
О чём код?
<?php require_once __DIR__ . '/config/config.php'; require_once __DIR__ . '/controllers/ArbitrageController.php'; // Проверка лимитов function validateLimits($n, $m) { if ($n > MAX_ITEMS) { fwrite(STDERR, "Ошибка: количество предметов ($n) превышает лимит (" . MAX_ITEMS . ")\n"); exit(1); } if ($m > MAX_EXCHANGES) { fwrite(STDERR, "Ошибка: количество обменов ($m) превышает лимит (" . MAX_EXCHANGES . ")\n"); exit(1); } } // Чтение входных данных $line = trim(fgets(STDIN)); if ($line === false) { echo "NO\n"; exit(0); } [$n, $m] = explode(' ', $line); $n = (int)$n; $m = (int)$m; validateLimits($n, $m); debug_log("Запуск анализа: n=$n, m=$m"); $controller = new ArbitrageController($n); // Чтение обменов for ($i = 0; $i < $m; $i++) { $line = trim(fgets(STDIN)); if ($line === false) { error_log_message("Неожиданный конец файла на обмене #$i"); break; } [$a, $b, $w] = explode(' ', $line); $controller->addExchange((int)$a - 1, (int)$b - 1, (int)$w); debug_log("Добавлен обмен: $a -> $b ($w золота)"); } $result = $controller->analyze(); if (!$result['hasCycle']) { echo "NO\n"; debug_log("Отрицательный цикл не найден"); } else { echo "YES\n"; $cycle = $result['cycle']; // Формируем вывод согласно настройкам if (REPEAT_START_IN_CYCLE) { // С повторением первого элемента в конце (классический цикл) $cycleForOutput = array_merge($cycle, [$cycle[0]]); } else { // Без повтора (только уникальная последовательность) $cycleForOutput = $cycle; } // Переводим в 1-индексацию для вывода $outputCycle = array_map(fn($v) => $v + 1, $cycleForOutput); echo implode(' ', $outputCycle) . "\n"; debug_log("Найден цикл: " . implode(' -> ', $outputCycle)); debug_log("Прибыль: " . $result['profit'] . " золота"); } // Дополнительная отладочная информация if (DEBUG_MODE && isset($result['total_payment'])) { debug_log("Суммарная доплата: " . $result['total_payment']);