結果
問題 | No.1460 Max of Min |
ユーザー |
![]() |
提出日時 | 2021-03-31 21:48:41 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,130 bytes |
コンパイル時間 | 2,025 ms |
コンパイル使用メモリ | 177,248 KB |
実行使用メモリ | 32,888 KB |
最終ジャッジ日時 | 2024-12-15 17:24:07 |
合計ジャッジ時間 | 218,465 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 TLE * 68 |
ソースコード
#include <bits/stdc++.h>int ri() {int n;scanf("%d", &n);return n;}int main() {int k = ri();int64_t n;std::cin >> n;int64_t a[k];int64_t b[k];for (auto &i : a) std::cin >> i;for (auto &i : b) std::cin >> i;if (n < k) {printf("%" PRId64 "\n", a[n]);return 0;}std::vector<std::vector<int64_t> > mat(k, std::vector<int64_t>(k, -1000000000000000000));for (int i = 0; i < k; i++) {mat[i][k - 1] = b[i];if (i) mat[i][i - 1] = 1000000000000000000;}n -= (k - 1);for (; n; n >>= 1) {if (n & 1) {int64_t next[k];for (auto &i : next) i = -1000000000000000000;for (int i = 0; i < k; i++) {for (int j = 0; j < k; j++) next[j] = std::max(next[j], std::min(a[i], mat[i][j]));}memcpy(a, next, sizeof(next));}std::vector<std::vector<int64_t> > next(k, std::vector<int64_t>(k, -1000000000000000000));for (int i = 0; i < k; i++) {for (int j = 0; j < k; j++) {for (int l = 0; l < k; l++) {next[i][l] = std::max(next[i][l], std::min(mat[i][j], mat[j][l]));}}}mat = next;}printf("%" PRId64 "\n", a[k - 1]);return 0;}