Submission #63336827


Source Code Expand

#include <iostream>
#include <vector>
#include <string>
#include <queue>
#include <deque>
#include <chrono>
#include <random>
#include <algorithm>

using namespace std;

vector<pair<int,int>> initial(
    const vector<string>& board,
    const pair<int,int>& start,
    const vector<pair<int,int>>& halls,
    const vector<vector<pair<int,int>>>& obj)
{
    const int dx[] = {-1, 1, 0, 0};
    const int dy[] = {0, 0, -1, 1};
    int N = board.size();
    int end = 0;
    int M = halls.size();
    int K = (M == 1 ? 2*N : N);
    int num = 0;
    for(int i=0;i<M;i++) num += obj[i].size();
    vector<vector<int>> hallPos(N, vector<int>(N, -1));
    for(int i=0;i<M;i++) hallPos[halls[i].first][halls[i].second] = i;
    vector<vector<int>> wallType(N, vector<int>(N, -1));
    vector<vector<int>> wallIdx(N, vector<int>(N, -1));
    for(int i=0;i<obj.size();i++){
        for(int j=0;j<obj[i].size();j++){
            wallType[obj[i][j].first][obj[i][j].second] = i;
            wallIdx[obj[i][j].first][obj[i][j].second] = j;
        }
    }
    vector<pair<int,int>> res;
    pair<int, int> st = start;
    for(int _=0;_<num;_++){
        vector<vector<vector<int>>> dist(1+M*K, vector<vector<int>>(N, vector<int>(N, 1<<30)));
        vector<vector<vector<int>>> enableRoll(M, vector<vector<int>>(N, vector<int>(N, 1000000)));

        for(int i=0;i<M;i++){
            for(int d=0;d<4;d++){
                int x = halls[i].first;
                int y = halls[i].second;
                enableRoll[i][x][y] = 0;
                int m = 0;
                while(true){
                    x += dx[d];
                    y += dy[d];
                    if(x < 0 || N <= x || y < 0 || N <= y) break;
                    if(hallPos[x][y] != -1) break;
                    m = max(m, wallType[x][y] != -1 ? 1 : 0);
                    enableRoll[i][x][y] = m;
                }
            }
        }

        deque<pair<int, pair<int, int>>> qu;
        qu.push_back(make_pair(0, st));
        dist[0][st.first][st.second] = 0;
        while(!qu.empty()){
            auto p = qu.front(); qu.pop_front();
            int state = p.first;
            int x = p.second.first;
            int y = p.second.second;
            int d = dist[state][x][y];
            if(state == 0){
                if(wallIdx[x][y] != -1){
                    int ns = wallType[x][y] * K + wallIdx[x][y] + 1;
                    if(dist[ns][x][y] > d){
                        dist[ns][x][y] = d;
                        qu.push_front(make_pair(ns, make_pair(x, y)));
                    }
                }
            }
            if(state != 0){
                if(hallPos[x][y] == (state-1)/K || enableRoll[(state-1)/K][x][y] == 0){
                    int type = (state-1)/K;
                    int idx = (state-1)%K;
                    res.push_back(make_pair(type, idx));
                    const auto& o = obj[type][idx];
                    wallIdx[o.first][o.second] = -1;
                    wallType[o.first][o.second] = -1;
                    st = make_pair(x, y);
                    break;
                }
            }
            for(int dr=0;dr<4;dr++){
                int nx = x + dx[dr];
                int ny = y + dy[dr];
                if(nx < 0 || N <= nx || ny < 0 || N <= ny) continue;
                if(state != 0){
                    if(wallType[nx][ny] != -1) continue;
                    if(hallPos[nx][ny] >= 0 && hallPos[nx][ny] != (state-1)/K) continue;
                }
                if(dist[state][nx][ny] > d+1){
                    dist[state][nx][ny] = d+1;
                    qu.push_back(make_pair(state, make_pair(nx, ny)));
                }
            }
        }
    }
    return res;
}


pair<int, vector<pair<int,int>>> score(const vector<string>& board, const pair<int,int>& start, const vector<pair<int,int>>& halls, const vector<vector<pair<int,int>>>& obj,
    const vector<pair<int,int>>& order)
{
    const int dx[] = {-1, 1, 0, 0};
    const int dy[] = {0, 0, -1, 1};
    int N = board.size();
    int end = 0;
    int M = halls.size();
    for(int i=0;i<order.size();i++) if (order[i].first != M) end = i+1;
    vector<vector<int>> hallPos(N, vector<int>(N, -1));
    for(int i=0;i<M;i++) hallPos[halls[i].first][halls[i].second] = i;
    vector<vector<vector<int>>> dist(2*end+1, vector<vector<int>>(N, vector<int>(N, 1<<30)));
    vector<vector<vector<pair<int,int>>>> prevAction(2*end+1, vector<vector<pair<int,int>>>(N, vector<pair<int,int>>(N, make_pair(-1, -1))));
    vector<vector<vector<pair<int,pair<int,int>>>>> prev(2*end+1, vector<vector<pair<int,pair<int,int>>>>(N, vector<pair<int,pair<int,int>>>(N, make_pair(-1, make_pair(-1,-1)))));
    vector<vector<vector<int>>> enableRoll(M, vector<vector<int>>(N, vector<int>(N, 1000000)));
    vector<vector<vector<int>>> dirRoll(M, vector<vector<int>>(N, vector<int>(N, 1000000)));
    vector<vector<int>> wall(N, vector<int>(N, 0));
    for(int i=0;i<order.size();i++){
        const auto& o = obj[order[i].first][order[i].second];
        wall[o.first][o.second] = 2*i;
    }
    for(int i=0;i<M;i++){
        for(int d=0;d<4;d++){
            int x = halls[i].first;
            int y = halls[i].second;
            enableRoll[i][x][y] = 0;
            int m = 0;
            while(true){
                x += dx[d];
                y += dy[d];
                if(x < 0 || N <= x || y < 0 || N <= y) break;
                if(hallPos[x][y] != -1) break;
                m = max(m, wall[x][y]);
                enableRoll[i][x][y] = m;
                dirRoll[i][x][y] = (d^1);
            }
        }
    }

    deque<pair<int, pair<int, int>>> qu;
    qu.push_back(make_pair(0, start));
    dist[0][start.first][start.second] = 0;
    int maxState = 0;
    while(!qu.empty()){
        auto p = qu.front(); qu.pop_front();
        int state = p.first;
        int x = p.second.first;
        int y = p.second.second;
        int d = dist[state][x][y];
        maxState = max(maxState, state);
        if(state == 2*end){
            vector<pair<int,int>> res;
            while(state != -1){
                if(prevAction[state][x][y].first != -1){
                    res.push_back(make_pair(prevAction[state][x][y].first, prevAction[state][x][y].second));
                }
                auto q = prev[state][x][y];
                state = q.first;
                x = q.second.first;
                y = q.second.second;
            }
            reverse(res.begin(), res.end());
            return make_pair(res.size(), res);
        }
        const auto& o = order[state/2];
        const auto& objPos = obj[o.first][o.second];
        if(state%2 == 0){
            if(obj[o.first][o.second] == make_pair(x, y)){
                if(dist[state+1][x][y] > d){
                    dist[state+1][x][y] = d;
                    prev[state+1][x][y] = make_pair(state, make_pair(x, y));
                    qu.push_front(make_pair(state+1, make_pair(x, y)));
                }
                continue;
            }
        }
        if(state%2 == 1){
            if(o.first == M){
                for(int i=0;i<M;i++){
                    if(enableRoll[i][x][y] <= state){
                        if(dist[state+1][x][y] > d+1){
                            dist[state+1][x][y] = d+1;
                            prev[state+1][x][y] = make_pair(state, make_pair(x, y));
                            prevAction[state+1][x][y] = make_pair(3, dirRoll[i][x][y]);
                            qu.push_back(make_pair(state+1, make_pair(x, y)));
                        }
                    }
                }
            } else {
                int i = o.first;
                if(enableRoll[i][x][y] <= state){
                    if(dist[state+1][x][y] > d+1){
                        dist[state+1][x][y] = d+1;
                        prev[state+1][x][y] = make_pair(state, make_pair(x, y));
                        prevAction[state+1][x][y] = make_pair(3, dirRoll[i][x][y]);
                        qu.push_back(make_pair(state+1, make_pair(x, y)));
                    }
                }
            }
        }
        for(int dr=0;dr<4;dr++){
            int nx = x + dx[dr];
            int ny = y + dy[dr];
            if(nx < 0 || N <= nx || ny < 0 || N <= ny) continue;
            if(state%2 == 1){
                if(wall[nx][ny] > state) continue;
                if(o.first != M && hallPos[nx][ny] >= 0 && o.first != hallPos[nx][ny]) continue;
            }
            if(state%2 == 0){
                int cdx = abs(x - objPos.first);
                int cdy = abs(y - objPos.second);
                int ndx = abs(nx - objPos.first);
                int ndy = abs(ny - objPos.second);
                if(cdx + cdy < ndx + ndy) continue;
                if(dist[state][nx][ny] > d+1){
                    dist[state][nx][ny] = d+1;
                    prevAction[state][nx][ny] = make_pair(1, dr);
                    prev[state][nx][ny] = make_pair(state, make_pair(x, y));
                    qu.push_back(make_pair(state, make_pair(nx, ny)));
                }
            } else {
                int nextState = state;
                if(hallPos[nx][ny] != -1){
                    nextState++;
                }
                if(dist[nextState][nx][ny] > d+1){
                    dist[nextState][nx][ny] = d+1;
                    prevAction[nextState][nx][ny] = make_pair(1+state%2, dr);
                    prev[nextState][nx][ny] = make_pair(state, make_pair(x, y));
                    qu.push_back(make_pair(nextState, make_pair(nx, ny)));
                }
            }
        }
    }
    return make_pair(maxState, vector<pair<int,int>>());
}

//------------------------------------------------------------------------------
class Timer {
public:
    explicit Timer()
        : mStart(chrono::system_clock::now())
    {}
    void start() { mStart = chrono::system_clock::now(); }
    double msec() const {
        auto t = chrono::system_clock::now();
        return 1e-3 * chrono::duration_cast<std::chrono::microseconds>(t - mStart).count();
    }
private:
    chrono::system_clock::time_point mStart;
};

//------------------------------------------------------------------------------
class XorShift {
public:
    using result_type = uint32_t;
    explicit XorShift(result_type seed){ init(seed); }
    void init(result_type s){
        x = 1812433253U * (s ^ (s >> 30));
        y = 1812433253U * (x ^ (x >> 30)) + 1;
        z = 1812433253U * (y ^ (y >> 30)) + 2;
        w = 1812433253U * (z ^ (z >> 30)) + 3;
    }
    static constexpr result_type min() { return numeric_limits<result_type>::min(); }
    static constexpr result_type max() { return numeric_limits<result_type>::max(); }
    result_type operator() () {
        result_type t = x ^ (x << 11);
        x = y; y = z; z = w;
        return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
    }
private:
    result_type x;
    result_type y;
    result_type z;
    result_type w;
};

XorShift rnd(1234567891);

int main(){
    int N, M; cin >> N >> M;
    vector<string> vs(N);
    for(auto& s : vs) cin >> s;
    pair<int,int> start;
    vector<pair<int, int>> halls(M);
    vector<vector<pair<int, int>>> obj(M+1, vector<pair<int, int>>());
    vector<pair<int,int>> dirs = {{1,0}, {-1,0}, {0,1}, {0,-1}};
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            if(vs[i][j] == 'A'){
                start = make_pair(i,j);
            }
            if(vs[i][j] == 'A' || vs[i][j] == 'B' || vs[i][j] == 'C'){
                halls[vs[i][j]-'A'] = make_pair(i, j);
            }
            if(vs[i][j] == 'a' || vs[i][j] == 'b' || vs[i][j] == 'c'){
                obj[vs[i][j]-'a'].push_back(make_pair(i, j));
            }
            if(vs[i][j] == '@') obj[M].push_back(make_pair(i, j));
        }
    }
    vector<pair<int,int>> order;
    for(int i=0;i<M+1;i++){
        for(int j=0;j<obj[i].size();j++){
            order.push_back(make_pair(i, j));
        }
    }
    cerr << score(vs, start, halls, obj, order).second.size() << endl;
    const auto& initOrder = initial(vs, start, halls, obj);
    cerr << initOrder.size() << " " << order.size() << endl;
    cerr << score(vs, start, halls, obj, initOrder).second.size() << endl;
    for(auto& o : initOrder){
        cerr << o.first << " " << o.second << endl;
    }
    order = initOrder;
    Timer timer;
    const double first_time = timer.msec();
    const double time_limit = 1950;
    const double initial_temp = 2;
    const double final_temp = 0;
    const long long max_iter = 2000000000LL;
    vector<pair<int,int>> bestMove;
    int bestScore = 1000000000;
    int curScore = bestScore;
    for(long long iter=0;iter<max_iter;iter++){
        if(timer.msec() > time_limit){
            cerr << "trynum: " << iter << endl;
            break;
        }

        const double ratio = (timer.msec() - first_time) / (time_limit - first_time);
        const double rev_ratio = 1 - ratio;
        const double temperature = initial_temp + (final_temp - initial_temp) * (1 - rev_ratio * rev_ratio * rev_ratio);


        int p0 = rnd() % order.size();
        int p1 = rnd() % order.size();
        while(order.size() >= 2 && p0 == p1){
            p1 = rnd() % order.size();
        }
        {
            auto tmp = order[p0];
            order.erase(order.begin() + p0);
            if(p0 < p1) p1--;
            order.insert(order.begin() + p1, tmp);
        }
        const auto cur = score(vs, start, halls, obj, order);
        int s = 0;
        if(cur.second.empty()){
            s = 20000 - cur.first;
        } else {
            s = cur.second.size();
        }
        const int dif = s - curScore;

        // スコアがtemperature悪化するときの採用確率は約36.8%
        if(dif < 0 || bernoulli_distribution(exp(-dif/temperature))(rnd)){
            curScore = s;
            if(curScore < bestScore){
                bestScore = curScore;
                bestMove = cur.second;
            }
        } else {
            auto tmp = order[p1];
            order.erase(order.begin() + p1);
            order.insert(order.begin() + p0, tmp);
        }
    }
    for(const auto& p : bestMove){
        cout << p.first << " " << "UDLR"[p.second] << endl;
    }
}

Submission Info

Submission Time
Task B - Ore Rolling (B)
User pes
Language C++ 17 (gcc 12.2)
Score 754057933
Code Size 14650 Byte
Status AC
Exec Time 1960 ms
Memory 5384 KiB

Compile Error

Main.cpp: In function ‘std::vector<std::pair<int, int> > initial(const std::vector<std::__cxx11::basic_string<char> >&, const std::pair<int, int>&, const std::vector<std::pair<int, int> >&, const std::vector<std::vector<std::pair<int, int> > >&)’:
Main.cpp:30:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::vector<std::pair<int, int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   30 |     for(int i=0;i<obj.size();i++){
      |                 ~^~~~~~~~~~~
Main.cpp:31:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   31 |         for(int j=0;j<obj[i].size();j++){
      |                     ~^~~~~~~~~~~~~~
Main.cpp:21:9: warning: unused variable ‘end’ [-Wunused-variable]
   21 |     int end = 0;
      |         ^~~
Main.cpp: In function ‘std::pair<int, std::vector<std::pair<int, int> > > score(const std::vector<std::__cxx11::basic_string<char> >&, const std::pair<int, int>&, const std::vector<std::pair<int, int> >&, const std::vector<std::vector<std::pair<int, int> > >&, const std::vector<std::pair<int, int> >&)’:
Main.cpp:116:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  116 |     for(int i=0;i<order.size();i++) if (order[i].first != M) end = i+1;
      |                 ~^~~~~~~~~~~~~
Main.cpp:125:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  125 |     for(int i=0;i<order.size();i++){
      |                 ~^~~~~~~~~~~~~
Main.cpp: In function ‘int main()’:
Main.cpp:311:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  311 |         for(int j=0;j<obj[i].size();j++){
      |                     ~^~~~~~~~~~~~~~

Judge Result

Set Name test_ALL
Score / Max Score 754057933 / 1500000000
Status
AC × 150
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 1959 ms 5312 KiB
test_0001.txt AC 1960 ms 5236 KiB
test_0002.txt AC 1958 ms 5236 KiB
test_0003.txt AC 1959 ms 5292 KiB
test_0004.txt AC 1959 ms 5264 KiB
test_0005.txt AC 1959 ms 5288 KiB
test_0006.txt AC 1960 ms 5224 KiB
test_0007.txt AC 1959 ms 5212 KiB
test_0008.txt AC 1959 ms 5304 KiB
test_0009.txt AC 1959 ms 5224 KiB
test_0010.txt AC 1959 ms 5256 KiB
test_0011.txt AC 1959 ms 5284 KiB
test_0012.txt AC 1959 ms 5172 KiB
test_0013.txt AC 1958 ms 5296 KiB
test_0014.txt AC 1960 ms 5252 KiB
test_0015.txt AC 1960 ms 5300 KiB
test_0016.txt AC 1959 ms 5296 KiB
test_0017.txt AC 1959 ms 5284 KiB
test_0018.txt AC 1959 ms 5224 KiB
test_0019.txt AC 1958 ms 5196 KiB
test_0020.txt AC 1958 ms 5220 KiB
test_0021.txt AC 1958 ms 5236 KiB
test_0022.txt AC 1958 ms 5380 KiB
test_0023.txt AC 1960 ms 5172 KiB
test_0024.txt AC 1958 ms 5256 KiB
test_0025.txt AC 1958 ms 5292 KiB
test_0026.txt AC 1959 ms 5376 KiB
test_0027.txt AC 1958 ms 5212 KiB
test_0028.txt AC 1959 ms 5308 KiB
test_0029.txt AC 1958 ms 5220 KiB
test_0030.txt AC 1959 ms 5384 KiB
test_0031.txt AC 1958 ms 5360 KiB
test_0032.txt AC 1958 ms 5236 KiB
test_0033.txt AC 1959 ms 5368 KiB
test_0034.txt AC 1959 ms 5308 KiB
test_0035.txt AC 1959 ms 5256 KiB
test_0036.txt AC 1958 ms 5168 KiB
test_0037.txt AC 1959 ms 5352 KiB
test_0038.txt AC 1960 ms 5232 KiB
test_0039.txt AC 1959 ms 5280 KiB
test_0040.txt AC 1959 ms 5200 KiB
test_0041.txt AC 1958 ms 5280 KiB
test_0042.txt AC 1959 ms 5368 KiB
test_0043.txt AC 1958 ms 5256 KiB
test_0044.txt AC 1959 ms 5304 KiB
test_0045.txt AC 1958 ms 5316 KiB
test_0046.txt AC 1960 ms 5284 KiB
test_0047.txt AC 1960 ms 5296 KiB
test_0048.txt AC 1959 ms 5384 KiB
test_0049.txt AC 1959 ms 5264 KiB
test_0050.txt AC 1958 ms 5232 KiB
test_0051.txt AC 1960 ms 5368 KiB
test_0052.txt AC 1958 ms 5372 KiB
test_0053.txt AC 1959 ms 5372 KiB
test_0054.txt AC 1959 ms 5292 KiB
test_0055.txt AC 1959 ms 5196 KiB
test_0056.txt AC 1959 ms 5376 KiB
test_0057.txt AC 1959 ms 5320 KiB
test_0058.txt AC 1959 ms 5284 KiB
test_0059.txt AC 1960 ms 5172 KiB
test_0060.txt AC 1959 ms 5260 KiB
test_0061.txt AC 1959 ms 5280 KiB
test_0062.txt AC 1959 ms 5256 KiB
test_0063.txt AC 1960 ms 5260 KiB
test_0064.txt AC 1960 ms 5172 KiB
test_0065.txt AC 1959 ms 5384 KiB
test_0066.txt AC 1959 ms 5368 KiB
test_0067.txt AC 1959 ms 5212 KiB
test_0068.txt AC 1959 ms 5264 KiB
test_0069.txt AC 1959 ms 5192 KiB
test_0070.txt AC 1959 ms 5220 KiB
test_0071.txt AC 1959 ms 5248 KiB
test_0072.txt AC 1959 ms 5284 KiB
test_0073.txt AC 1959 ms 5168 KiB
test_0074.txt AC 1960 ms 5296 KiB
test_0075.txt AC 1960 ms 5172 KiB
test_0076.txt AC 1959 ms 5376 KiB
test_0077.txt AC 1959 ms 5384 KiB
test_0078.txt AC 1959 ms 5376 KiB
test_0079.txt AC 1958 ms 5376 KiB
test_0080.txt AC 1958 ms 5292 KiB
test_0081.txt AC 1959 ms 5224 KiB
test_0082.txt AC 1959 ms 5224 KiB
test_0083.txt AC 1960 ms 5288 KiB
test_0084.txt AC 1959 ms 5284 KiB
test_0085.txt AC 1959 ms 5164 KiB
test_0086.txt AC 1958 ms 5248 KiB
test_0087.txt AC 1958 ms 5280 KiB
test_0088.txt AC 1958 ms 5192 KiB
test_0089.txt AC 1959 ms 5260 KiB
test_0090.txt AC 1958 ms 5296 KiB
test_0091.txt AC 1959 ms 5200 KiB
test_0092.txt AC 1959 ms 5296 KiB
test_0093.txt AC 1959 ms 5296 KiB
test_0094.txt AC 1959 ms 5272 KiB
test_0095.txt AC 1958 ms 5312 KiB
test_0096.txt AC 1959 ms 5284 KiB
test_0097.txt AC 1959 ms 5280 KiB
test_0098.txt AC 1958 ms 5308 KiB
test_0099.txt AC 1958 ms 5200 KiB
test_0100.txt AC 1959 ms 5228 KiB
test_0101.txt AC 1959 ms 5260 KiB
test_0102.txt AC 1958 ms 5260 KiB
test_0103.txt AC 1959 ms 5284 KiB
test_0104.txt AC 1959 ms 5176 KiB
test_0105.txt AC 1958 ms 5196 KiB
test_0106.txt AC 1958 ms 5376 KiB
test_0107.txt AC 1959 ms 5312 KiB
test_0108.txt AC 1958 ms 5276 KiB
test_0109.txt AC 1959 ms 5248 KiB
test_0110.txt AC 1958 ms 5320 KiB
test_0111.txt AC 1958 ms 5360 KiB
test_0112.txt AC 1958 ms 5248 KiB
test_0113.txt AC 1960 ms 5312 KiB
test_0114.txt AC 1959 ms 5168 KiB
test_0115.txt AC 1960 ms 5300 KiB
test_0116.txt AC 1959 ms 5236 KiB
test_0117.txt AC 1959 ms 5248 KiB
test_0118.txt AC 1958 ms 5272 KiB
test_0119.txt AC 1959 ms 5208 KiB
test_0120.txt AC 1959 ms 5164 KiB
test_0121.txt AC 1958 ms 5364 KiB
test_0122.txt AC 1958 ms 5252 KiB
test_0123.txt AC 1959 ms 5252 KiB
test_0124.txt AC 1959 ms 5380 KiB
test_0125.txt AC 1958 ms 5192 KiB
test_0126.txt AC 1960 ms 5260 KiB
test_0127.txt AC 1959 ms 5276 KiB
test_0128.txt AC 1959 ms 5208 KiB
test_0129.txt AC 1958 ms 5308 KiB
test_0130.txt AC 1960 ms 5280 KiB
test_0131.txt AC 1959 ms 5384 KiB
test_0132.txt AC 1958 ms 5256 KiB
test_0133.txt AC 1959 ms 5284 KiB
test_0134.txt AC 1959 ms 5168 KiB
test_0135.txt AC 1958 ms 5288 KiB
test_0136.txt AC 1959 ms 5220 KiB
test_0137.txt AC 1959 ms 5256 KiB
test_0138.txt AC 1959 ms 5252 KiB
test_0139.txt AC 1960 ms 5236 KiB
test_0140.txt AC 1959 ms 5252 KiB
test_0141.txt AC 1958 ms 5260 KiB
test_0142.txt AC 1958 ms 5236 KiB
test_0143.txt AC 1959 ms 5300 KiB
test_0144.txt AC 1959 ms 5320 KiB
test_0145.txt AC 1958 ms 5248 KiB
test_0146.txt AC 1958 ms 5196 KiB
test_0147.txt AC 1959 ms 5292 KiB
test_0148.txt AC 1958 ms 5212 KiB
test_0149.txt AC 1959 ms 5288 KiB