提出 #73749558


ソースコード 拡げる

#pragma GCC optimize("O3")
#include <iostream>
#include <vector>
#include <string>
#include <chrono>
#include <random>
#include <algorithm>
#include <set>
#include <map>

using namespace std;

// 実行時間管理
struct Timer {
    chrono::high_resolution_clock::time_point start_time;
    Timer() { start_time = chrono::high_resolution_clock::now(); }
    double get_time() {
        auto now = chrono::high_resolution_clock::now();
        return chrono::duration<double>(now - start_time).count();
    }
};

const int N = 20;

struct Input {
    int N_val;
    long long AK, AM, AW;
    vector<string> wall_v;
    vector<string> wall_h;
    
    void read() {
        if (!(cin >> N_val >> AK >> AM >> AW)) return;
        wall_v.resize(N_val);
        for (int i = 0; i < N_val; ++i) cin >> wall_v[i];
        wall_h.resize(N_val - 1);
        for (int i = 0; i < N_val - 1; ++i) cin >> wall_h[i];
    }
    
    bool has_wall(int r, int c, int d) const {
        if (d == 0) { // U
            if (r == 0) return true;
            return wall_h[r - 1][c] == '1';
        } else if (d == 1) { // R
            if (c == N - 1) return true;
            return wall_v[r][c] == '1';
        } else if (d == 2) { // D
            if (r == N - 1) return true;
            return wall_h[r][c] == '1';
        } else if (d == 3) { // L
            if (c == 0) return true;
            return wall_v[r][c - 1] == '1';
        }
        return true;
    }
};

struct Robot {
    int mk;
    int r, c;
    char d;
    vector<char> a0, a1;
    vector<int> b0, b1;
};

struct Solution {
    vector<Robot> robots;
    long long cost;
    void calc_cost(long long AK, long long AM) {
        long long K = robots.size();
        long long M = 0;
        for (const auto& r : robots) M += r.mk;
        cost = AK * max(0LL, K - 1) + AM * M;
    }
    void print() const {
        cout << robots.size() << "\n";
        for (const auto& rob : robots) {
            cout << rob.mk << " " << rob.r << " " << rob.c << " " << rob.d << "\n";
            for (int s = 0; s < rob.mk; ++s) {
                cout << rob.a0[s] << " " << rob.b0[s] << " " << rob.a1[s] << " " << rob.b1[s] << "\n";
            }
        }
        for (int i = 0; i < N; ++i) {
            for (int j = 0; j < N - 1; ++j) cout << "0";
            cout << "\n";
        }
        for (int i = 0; i < N - 1; ++i) {
            for (int j = 0; j < N; ++j) cout << "0";
            cout << "\n";
        }
    }
};

const int dr[] = {-1, 0, 1, 0};
const int dc[] = {0, 1, 0, -1};
const char dir_char[] = {'U', 'R', 'D', 'L'};

struct CycleInfo {
    Robot rob;
    vector<int> cells;
};

Robot shift_robot(Robot rob, int target_r, int target_c, const Input& in) {
    int r = rob.r, c = rob.c, d = 0;
    if (rob.d == 'U') d = 0; else if (rob.d == 'R') d = 1; else if (rob.d == 'D') d = 2; else if (rob.d == 'L') d = 3;
    int s = 0;
    
    for (int step = 0; step < 10000; ++step) {
        if (r == target_r && c == target_c) {
            vector<int> map_state(rob.mk, -1);
            map_state[s] = 0;
            int nfree = 1;
            for (int i = 0; i < rob.mk; ++i) {
                if (map_state[i] == -1) map_state[i] = nfree++;
            }
            
            Robot nrob = rob;
            nrob.r = r; nrob.c = c; nrob.d = dir_char[d];
            for (int i = 0; i < rob.mk; ++i) {
                int n_s = map_state[i];
                nrob.a0[n_s] = rob.a0[i];
                nrob.b0[n_s] = map_state[rob.b0[i]];
                nrob.a1[n_s] = rob.a1[i];
                nrob.b1[n_s] = map_state[rob.b1[i]];
            }
            return nrob;
        }
        
        bool wall = in.has_wall(r, c, d);
        char act = wall ? rob.a1[s] : rob.a0[s];
        int nxt_s = wall ? rob.b1[s] : rob.b0[s];
        
        if (act == 'F' && !wall) {
            r += dr[d]; c += dc[d];
        } else if (act == 'R') d = (d + 1) % 4;
        else if (act == 'L') d = (d + 3) % 4;
        s = nxt_s;
    }
    return rob; 
}

void explore_policy(int mk, const vector<char>& a0, const vector<int>& b0, const vector<char>& a1, const vector<int>& b1, vector<CycleInfo>& pool, const Input& in, vector<int>& visited, vector<int>& path) {
    int V = N * N * 4 * mk;
    if (visited.size() < V) visited.resize(V);
    else fill(visited.begin(), visited.begin() + V, 0);
    
    for (int start_v = 0; start_v < V; ++start_v) {
        if (visited[start_v]) continue;
        
        int curr = start_v;
        path.clear();
        
        while (visited[curr] == 0) {
            visited[curr] = 1;
            path.push_back(curr);
            
            int s = curr % mk;
            int tmp = curr / mk;
            int d = tmp % 4;
            int c = (tmp / 4) % N;
            int r = (tmp / 4) / N;
            
            bool wall = in.has_wall(r, c, d);
            char act = wall ? a1[s] : a0[s];
            int nxt_s = wall ? b1[s] : b0[s];
            
            int nr = r, nc = c, nd = d;
            if (act == 'F') {
                nr += dr[d]; nc += dc[d];
            } else if (act == 'R') {
                nd = (d + 1) % 4;
            } else if (act == 'L') {
                nd = (d + 3) % 4;
            }
            curr = ((nr * N + nc) * 4 + nd) * mk + nxt_s;
        }
        
        if (visited[curr] == 1) {
            // found cycle!
            int cycle_start_idx = -1;
            for (int i = 0; i < (int)path.size(); ++i) {
                if (path[i] == curr) { cycle_start_idx = i; break; }
            }
            if (cycle_start_idx != -1) {
                set<int> cov;
                for (int i = cycle_start_idx; i < (int)path.size(); ++i) {
                    int tmp = path[i] / mk;
                    int cell = tmp / 4;
                    cov.insert(cell);
                }
                
                int start_state = curr % mk;
                int start_tmp = curr / mk;
                int start_d = start_tmp % 4;
                int start_c = (start_tmp / 4) % N;
                int start_r = (start_tmp / 4) / N;
                
                vector<int> state_map(mk, -1);
                state_map[start_state] = 0;
                int nxt_free = 1;
                for(int i = cycle_start_idx; i < (int)path.size(); ++i) {
                    int s = path[i] % mk;
                    if(state_map[s] == -1) state_map[s] = nxt_free++;
                }
                for(int s = 0; s < mk; ++s) {
                    if(state_map[s] == -1) state_map[s] = nxt_free++;
                }
                
                Robot rob;
                rob.mk = mk;
                rob.r = start_r; rob.c = start_c; rob.d = dir_char[start_d];
                rob.a0.resize(mk); rob.a1.resize(mk);
                rob.b0.resize(mk); rob.b1.resize(mk);
                
                for(int s = 0; s < mk; ++s) {
                    int new_s = state_map[s];
                    rob.a0[new_s] = a0[s];
                    rob.b0[new_s] = state_map[b0[s]];
                    rob.a1[new_s] = a1[s];
                    rob.b1[new_s] = state_map[b1[s]];
                }
                
                CycleInfo ci;
                ci.rob = rob;
                for (int cell : cov) ci.cells.push_back(cell);
                pool.push_back(ci);
            }
        }
        for (int v : path) visited[v] = 2;
    }
}

Solution solve_pattern_A(const Input& in, mt19937& rng, Timer& timer) {
    vector<CycleInfo> pool;
    vector<int> visited, path;

    char acts0[] = {'F', 'R', 'L'};
    char acts1[] = {'R', 'L'};

    // --- 1. プールの生成(既存のロジック) ---
    for (int a0_0 = 0; a0_0 < 3; ++a0_0) {
        for (int a1_0 = 0; a1_0 < 2; ++a1_0) {
            explore_policy(1, {acts0[a0_0]}, {0}, {acts1[a1_0]}, {0}, pool, in, visited, path);
        }
    }

    for(int a0_0=0; a0_0<3; ++a0_0)
    for(int a1_0=0; a1_0<2; ++a1_0)
    for(int b0_0=0; b0_0<2; ++b0_0)
    for(int b1_0=0; b1_0<2; ++b1_0)
    for(int a0_1=0; a0_1<3; ++a0_1)
    for(int a1_1=0; a1_1<2; ++a1_1)
    for(int b0_1=0; b0_1<2; ++b0_1)
    for(int b1_1=0; b1_1<2; ++b1_1) {
        explore_policy(2, {acts0[a0_0], acts0[a0_1]}, {b0_0, b0_1}, {acts1[a1_0], acts1[a1_1]}, {b1_0, b1_1}, pool, in, visited, path);
    }

    for (int mk = 3; mk <= 6; ++mk) {
        int iter = 0;
        double mk_time_limit = 0.3 * (mk - 1);
        while (true) {
            iter++;
            if ((iter & 31) == 0) {
                double t = timer.get_time();
                if (t > 1.0) goto EXPLORE_END; 
                if (t > mk_time_limit) break;
            }
            vector<char> a0(mk), a1(mk);
            vector<int> b0(mk), b1(mk);
            for (int s = 0; s < mk; ++s) {
                int r0 = rng() % 10;
                a0[s] = (r0 < 8) ? 'F' : ((r0 == 8) ? 'R' : 'L');
                b0[s] = rng() % mk;
                a1[s] = (rng() % 2 == 0) ? 'R' : 'L';
                b1[s] = rng() % mk;
            }
            explore_policy(mk, a0, b0, a1, b1, pool, in, visited, path);
        }
    }

EXPLORE_END:
    int P = pool.size();
    if (P == 0) return Solution();

    // --- 2. 貪欲法による初期解の構築 ---
    vector<bool> current_state(P, false);
    vector<int> cov_count(N * N, 0);
    int current_uncov = N * N;
    int current_k = 0;
    long long current_m_sum = 0;

    while (current_uncov > 0) {
        if ((current_k & 15) == 0 && timer.get_time() > 1.2) break; // Emergency timeout
        
        int best_idx = -1;
        double best_score = 1e18;
        for (int i = 0; i < P; ++i) {
            if (current_state[i]) continue;
            int new_cov = 0;
            for (int cell : pool[i].cells) if (cov_count[cell] == 0) new_cov++;
            if (new_cov == 0) continue;

            long long cost_delta = in.AM * pool[i].rob.mk;
            if (current_k > 0) cost_delta += in.AK;
            double score = (double)cost_delta / new_cov;
            if (score < best_score) { best_score = score; best_idx = i; }
        }
        if (best_idx == -1) break; // Infinite loop fix: no more robots can help

        current_state[best_idx] = true;
        current_k++;
        current_m_sum += pool[best_idx].rob.mk;
        for (int cell : pool[best_idx].cells) {
            if (cov_count[cell] == 0) current_uncov--;
            cov_count[cell]++;
        }
    }

    // --- 3. 焼きなまし法 (SA) ---
    auto calc_energy = [&](int k, long long m_sum, int uncov_count) -> double {
        double cost = (double)in.AK * max(0, k - 1) + (double)in.AM * m_sum;
        // ペナルティをマイルドに設定。1マス未踏につき、平均的なロボット追加コストより少し高いくらいにする
        double penalty_per_cell = in.AK + in.AM * 4.0 + 1000.0; 
        return cost + (double)uncov_count * penalty_per_cell;
    };

    double current_energy = calc_energy(current_k, current_m_sum, current_uncov);
    vector<bool> best_state = current_state;
    double best_energy = current_energy;

    double start_time = timer.get_time();
    double time_limit = 1.15;
    
    // Safety check in case greedy generation took so long we're already out of time
    if (start_time >= time_limit) {
        Solution sol;
        vector<bool> used_initial(N * N, false);
        for (int i = 0; i < P; ++i) {
            if (best_state[i]) {
                Robot rob = pool[i].rob;
                int target_cell = -1;
                for (int cell : pool[i].cells) {
                    if (!used_initial[cell]) {
                        target_cell = cell;
                        break;
                    }
                }
                if (target_cell != -1) {
                    used_initial[target_cell] = true;
                    rob = shift_robot(rob, target_cell / N, target_cell % N, in);
                }
                sol.robots.push_back(rob);
            }
        }
        sol.calc_cost(in.AK, in.AM);
        return sol;
    }
    
    int sa_iter = 0;
    while (true) {
        sa_iter++;
        if ((sa_iter & 2047) == 0) { // Check time less frequently
            if (timer.get_time() > time_limit) break;
        }

        double progress = (timer.get_time() - start_time) / (time_limit - start_time);
        // 温度スケールを調整: 悪化幅(approx 1000~2000)に対して確率的に受理されるように
        double temp_start = 2000.0; 
        double temp_end = 1.0;
        double temp = temp_start * pow(temp_end / temp_start, progress); // 指数冷却

        int type = rng() % 3;
        int add_idx = -1, rem_idx = -1;
        if (type == 0 || type == 2) {
            add_idx = rng() % P;
            if (current_state[add_idx]) add_idx = -1;
        }
        if (type == 1 || type == 2) {
            if (current_k > 0) {
                int r = rng() % P;
                for(int i=0; i<P; ++i) {
                    int idx = (r+i)%P;
                    if(current_state[idx]) { rem_idx = idx; break; }
                }
            }
        }
        
        if (type == 2 && (add_idx == -1 || rem_idx == -1)) continue;
        if (type == 0 && add_idx == -1) continue;
        if (type == 1 && rem_idx == -1) continue;

        // 差分計算
        int next_k = current_k;
        long long next_m_sum = current_m_sum;
        int next_uncov = current_uncov;

        if (add_idx != -1) { next_k++; next_m_sum += pool[add_idx].rob.mk; }
        if (rem_idx != -1) { next_k--; next_m_sum -= pool[rem_idx].rob.mk; }

        // 未被覆数の変化を確認
        if (add_idx != -1) {
            for (int cell : pool[add_idx].cells) {
                if (cov_count[cell] == 0) next_uncov--;
                cov_count[cell]++;
            }
        }
        if (rem_idx != -1) {
            for (int cell : pool[rem_idx].cells) {
                cov_count[cell]--;
                if (cov_count[cell] == 0) next_uncov++;
            }
        }

        double next_energy = calc_energy(next_k, next_m_sum, next_uncov);
        double delta = next_energy - current_energy;

        bool accept = false;
        if (delta <= 0) accept = true;
        else if (temp > 0) {
            // Fast integer-based approximation or direct comparison for SA
            // Double division and exp() are very slow.
            // Since we just need a probability, we can use a lookup table or just simple math.
            if ((double)(rng() % 1000000) / 1000000.0 < exp(-delta / temp)) {
                accept = true;
            }
        }

        if (accept) {
            current_energy = next_energy;
            current_k = next_k;
            current_m_sum = next_m_sum;
            current_uncov = next_uncov;
            if (add_idx != -1) current_state[add_idx] = true;
            if (rem_idx != -1) current_state[rem_idx] = false;

            if (current_uncov == 0 && current_energy < best_energy) {
                best_energy = current_energy;
                best_state = current_state;
            }
        } else {
            // ロールバック
            if (add_idx != -1) {
                for (int cell : pool[add_idx].cells) cov_count[cell]--;
            }
            if (rem_idx != -1) {
                for (int cell : pool[rem_idx].cells) cov_count[cell]++;
            }
        }
    }

    Solution sol;
    vector<bool> used_initial(N * N, false);
    for (int i = 0; i < P; ++i) {
        if (best_state[i]) {
            Robot rob = pool[i].rob;
            int target_cell = -1;
            for (int cell : pool[i].cells) {
                if (!used_initial[cell]) {
                    target_cell = cell;
                    break;
                }
            }
            if (target_cell != -1) {
                used_initial[target_cell] = true;
                rob = shift_robot(rob, target_cell / N, target_cell % N, in);
            }
            sol.robots.push_back(rob);
        }
    }
    sol.calc_cost(in.AK, in.AM);
    return sol;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    Input in;
    in.read();

    Timer timer;
    mt19937 rng(42);

    Solution best_sol = solve_pattern_A(in, rng, timer);
    best_sol.print();

    return 0;
}

提出情報

提出日時
問題 A - Periodic Patrol Automata (A)
ユーザ mol_626
言語 C++23 (GCC 15.2.0)
得点 669397242
コード長 16740 Byte
結果 AC
実行時間 1870 ms
メモリ 449216 KiB

コンパイルエラー

./Main.cpp: In function 'void explore_policy(int, const std::vector<char>&, const std::vector<int>&, const std::vector<char>&, const std::vector<int>&, std::vector<CycleInfo>&, const Input&, std::vector<int>&, std::vector<int>&)':
./Main.cpp:143:24: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  143 |     if (visited.size() < V) visited.resize(V);
      |         ~~~~~~~~~~~~~~~^~~

ジャッジ結果

セット名 test_ALL
得点 / 配点 669397242 / 15000000000
結果
AC × 150
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
test_0000.txt AC 1221 ms 449192 KiB
test_0001.txt AC 1308 ms 448004 KiB
test_0002.txt AC 1249 ms 447392 KiB
test_0003.txt AC 1594 ms 448300 KiB
test_0004.txt AC 1403 ms 448084 KiB
test_0005.txt AC 1379 ms 447712 KiB
test_0006.txt AC 1342 ms 448272 KiB
test_0007.txt AC 1306 ms 448236 KiB
test_0008.txt AC 1437 ms 448420 KiB
test_0009.txt AC 1357 ms 448208 KiB
test_0010.txt AC 1400 ms 447832 KiB
test_0011.txt AC 1284 ms 448320 KiB
test_0012.txt AC 1363 ms 447760 KiB
test_0013.txt AC 1401 ms 448388 KiB
test_0014.txt AC 1429 ms 448184 KiB
test_0015.txt AC 1241 ms 448372 KiB
test_0016.txt AC 1364 ms 448176 KiB
test_0017.txt AC 1222 ms 448132 KiB
test_0018.txt AC 1385 ms 448568 KiB
test_0019.txt AC 1350 ms 448188 KiB
test_0020.txt AC 1282 ms 448020 KiB
test_0021.txt AC 1636 ms 448352 KiB
test_0022.txt AC 1287 ms 448236 KiB
test_0023.txt AC 1241 ms 448228 KiB
test_0024.txt AC 1860 ms 447964 KiB
test_0025.txt AC 1405 ms 448520 KiB
test_0026.txt AC 1350 ms 448028 KiB
test_0027.txt AC 1393 ms 447928 KiB
test_0028.txt AC 1380 ms 448328 KiB
test_0029.txt AC 1230 ms 448104 KiB
test_0030.txt AC 1404 ms 449020 KiB
test_0031.txt AC 1506 ms 448052 KiB
test_0032.txt AC 1302 ms 448400 KiB
test_0033.txt AC 1395 ms 448152 KiB
test_0034.txt AC 1372 ms 448392 KiB
test_0035.txt AC 1216 ms 447488 KiB
test_0036.txt AC 1238 ms 447936 KiB
test_0037.txt AC 1265 ms 447952 KiB
test_0038.txt AC 1253 ms 448020 KiB
test_0039.txt AC 1404 ms 448100 KiB
test_0040.txt AC 1374 ms 447660 KiB
test_0041.txt AC 1728 ms 448312 KiB
test_0042.txt AC 1367 ms 449020 KiB
test_0043.txt AC 1391 ms 447864 KiB
test_0044.txt AC 1365 ms 447788 KiB
test_0045.txt AC 1396 ms 448364 KiB
test_0046.txt AC 1402 ms 448304 KiB
test_0047.txt AC 1371 ms 448288 KiB
test_0048.txt AC 1364 ms 448664 KiB
test_0049.txt AC 1362 ms 448236 KiB
test_0050.txt AC 1692 ms 448024 KiB
test_0051.txt AC 1247 ms 447324 KiB
test_0052.txt AC 1271 ms 448084 KiB
test_0053.txt AC 1472 ms 448024 KiB
test_0054.txt AC 1249 ms 447584 KiB
test_0055.txt AC 1216 ms 448232 KiB
test_0056.txt AC 1374 ms 449196 KiB
test_0057.txt AC 1369 ms 447980 KiB
test_0058.txt AC 1364 ms 447956 KiB
test_0059.txt AC 1337 ms 448548 KiB
test_0060.txt AC 1227 ms 448376 KiB
test_0061.txt AC 1410 ms 447988 KiB
test_0062.txt AC 1325 ms 448352 KiB
test_0063.txt AC 1339 ms 448412 KiB
test_0064.txt AC 1250 ms 447728 KiB
test_0065.txt AC 1286 ms 448580 KiB
test_0066.txt AC 1783 ms 448508 KiB
test_0067.txt AC 1358 ms 448556 KiB
test_0068.txt AC 1239 ms 448364 KiB
test_0069.txt AC 1378 ms 448716 KiB
test_0070.txt AC 1347 ms 448540 KiB
test_0071.txt AC 1350 ms 447660 KiB
test_0072.txt AC 1667 ms 448292 KiB
test_0073.txt AC 1273 ms 448208 KiB
test_0074.txt AC 1345 ms 448840 KiB
test_0075.txt AC 1374 ms 448208 KiB
test_0076.txt AC 1369 ms 447692 KiB
test_0077.txt AC 1377 ms 447956 KiB
test_0078.txt AC 1411 ms 447788 KiB
test_0079.txt AC 1248 ms 447932 KiB
test_0080.txt AC 1266 ms 448876 KiB
test_0081.txt AC 1414 ms 449216 KiB
test_0082.txt AC 1223 ms 448884 KiB
test_0083.txt AC 1353 ms 448392 KiB
test_0084.txt AC 1338 ms 448136 KiB
test_0085.txt AC 1326 ms 447892 KiB
test_0086.txt AC 1452 ms 448748 KiB
test_0087.txt AC 1372 ms 448184 KiB
test_0088.txt AC 1609 ms 447984 KiB
test_0089.txt AC 1388 ms 448140 KiB
test_0090.txt AC 1250 ms 448200 KiB
test_0091.txt AC 1825 ms 447760 KiB
test_0092.txt AC 1222 ms 448480 KiB
test_0093.txt AC 1278 ms 447972 KiB
test_0094.txt AC 1233 ms 447780 KiB
test_0095.txt AC 1369 ms 448160 KiB
test_0096.txt AC 1281 ms 447848 KiB
test_0097.txt AC 1284 ms 448672 KiB
test_0098.txt AC 1249 ms 447768 KiB
test_0099.txt AC 1660 ms 447552 KiB
test_0100.txt AC 1381 ms 448264 KiB
test_0101.txt AC 1359 ms 447828 KiB
test_0102.txt AC 1260 ms 448284 KiB
test_0103.txt AC 1401 ms 448976 KiB
test_0104.txt AC 1267 ms 447996 KiB
test_0105.txt AC 1350 ms 447792 KiB
test_0106.txt AC 1264 ms 448024 KiB
test_0107.txt AC 1524 ms 448784 KiB
test_0108.txt AC 1389 ms 447740 KiB
test_0109.txt AC 1362 ms 448332 KiB
test_0110.txt AC 1257 ms 448628 KiB
test_0111.txt AC 1370 ms 448640 KiB
test_0112.txt AC 1260 ms 448200 KiB
test_0113.txt AC 1236 ms 448172 KiB
test_0114.txt AC 1290 ms 447748 KiB
test_0115.txt AC 1408 ms 448328 KiB
test_0116.txt AC 1436 ms 448144 KiB
test_0117.txt AC 1250 ms 448620 KiB
test_0118.txt AC 1257 ms 447912 KiB
test_0119.txt AC 1367 ms 448160 KiB
test_0120.txt AC 1266 ms 447344 KiB
test_0121.txt AC 1370 ms 449008 KiB
test_0122.txt AC 1251 ms 448488 KiB
test_0123.txt AC 1220 ms 447904 KiB
test_0124.txt AC 1411 ms 448164 KiB
test_0125.txt AC 1435 ms 448224 KiB
test_0126.txt AC 1333 ms 448004 KiB
test_0127.txt AC 1377 ms 448984 KiB
test_0128.txt AC 1245 ms 447508 KiB
test_0129.txt AC 1250 ms 448256 KiB
test_0130.txt AC 1426 ms 448200 KiB
test_0131.txt AC 1357 ms 448776 KiB
test_0132.txt AC 1375 ms 448496 KiB
test_0133.txt AC 1365 ms 448224 KiB
test_0134.txt AC 1287 ms 448092 KiB
test_0135.txt AC 1266 ms 448284 KiB
test_0136.txt AC 1269 ms 448368 KiB
test_0137.txt AC 1289 ms 447996 KiB
test_0138.txt AC 1382 ms 448424 KiB
test_0139.txt AC 1407 ms 448148 KiB
test_0140.txt AC 1256 ms 448028 KiB
test_0141.txt AC 1279 ms 447996 KiB
test_0142.txt AC 1386 ms 447712 KiB
test_0143.txt AC 1662 ms 448432 KiB
test_0144.txt AC 1358 ms 448612 KiB
test_0145.txt AC 1612 ms 448108 KiB
test_0146.txt AC 1611 ms 448204 KiB
test_0147.txt AC 1696 ms 448188 KiB
test_0148.txt AC 1233 ms 448400 KiB
test_0149.txt AC 1870 ms 448516 KiB