Submission #894908

#TimeUsernameProblemLanguageResultExecution timeMemory
894908sleepntsheepSaveit (IOI10_saveit)C++17
0 / 100
204 ms20484 KiB
#include "grader.h"
#include "encoder.h"
#include <vector>
#include <queue>


void send_int(int x, int nb)
{
    for (int j = 0; j < nb; ++j) encode_bit((x >> j) & 1);
}

#define N 1001

using namespace std;

vector<int> g[N];
int n, h;

vector<int> bfs(int u)
{
    vector<int> d(n, 1e9);
    queue<pair<int, int>> q;
    q.emplace(d[u] = 0, u);
    while (q.size())
    {
        auto [c, u] = q.front(); q.pop();
        for (auto v : g[u])
        {
            if (c + 1 < d[v])
                q.emplace(d[v] = c + 1, v);
        }
    }
    return d;
}

void encode(int n0, int h0, int ne, int *v1, int *v2){
    for (int i = 0; i < ne; ++i) g[v1[i]].push_back(v2[i]), g[v2[i]].push_back(v1[i]);
    ::n = n0; ::h = h0;

    for (int i = 0; i < h; ++i)
    {
        auto d = bfs(i);
        for (int j = 0; j < n; ++j)
        {
            if (d[j] <= 64) send_int(1, 1);
            else send_int(0, 1);
            send_int(d[j], 10);
        }
    }

    return;
}

#include "grader.h"
#include "decoder.h"

unsigned read_int(int nb)
{
    unsigned u = 0;
    for (int j = 0; j < nb; ++j) u |= decode_bit() << j;
    return u;
}

int n, h;

void decode(int v0, int h0) {
    ::n = v0; ::h = h0;
    for (int i = 0; i < h; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            int small = read_int(1);
            if (small)
                hops(i, j, read_int(6));
            else hops(i, j, read_int(5));
        }
    }
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...