Submission #1017048

# Submission time Handle Problem Language Result Execution time Memory
1017048 2024-07-08T19:15:30 Z MilosMilutinovic Saveit (IOI10_saveit) C++14
75 / 100
158 ms 16548 KB
#include "grader.h"
#include "encoder.h"
#include <bits/stdc++.h>

using namespace std;

void encode(int nv, int nh, int ne, int *v1, int *v2) {
  vector<vector<int>> g(nv);
  for (int i = 0; i < ne; i++) {
    g[v1[i]].push_back(v2[i]);
    g[v2[i]].push_back(v1[i]);
  }
  vector<int> par(nv, -1);
  vector<bool> was(nv);
  function<void(int, int)> Dfs = [&](int v, int pv) {
    par[v] = pv;
    was[v] = true;
    for (int u : g[v]) {
      if (was[u]) {
        continue;
      }
      Dfs(u, v);
    }
  }; 
  Dfs(0, 0);
  for (int v = 0; v < nv; v++) {
    for (int b = 0; b < 10; b++) {
      encode_bit(par[v] >> b & 1);
    }
  }
  for (int h = 0; h < nh; h++) {
    vector<int> dist(nv, -1);
    dist[h] = 0;
    vector<int> que(1, h);
    for (int b = 0; b < (int) que.size(); b++) {
      int i = que[b];
      for (int j : g[i]) {
        if (dist[j] == -1) {
          dist[j] = dist[i] + 1;
          que.push_back(j);
        }
      }
    }
    for (int v = 0; v < nv; v++) {
      if (v + 2 >= nv) {
        if (dist[v] == dist[par[v]]) {
          encode_bit(0);
          encode_bit(1);
        }
        if (dist[v] == dist[par[v]] + 1) {
          encode_bit(1);
          encode_bit(0);
        }
        if (dist[v] == dist[par[v]] - 1) {
          encode_bit(0);
          encode_bit(0);
        }
        continue;
      }
      int num = 0;
      for (int t = v; t < v + 3; t++) {
        num = num * 3 + (dist[t] - dist[par[t]] + 1);
      }
      for (int b = 0; b < 5; b++) {
        encode_bit(num >> b & 1);
      }
      v += 2;
    }
  }
  return;
}
#include "grader.h"
#include "decoder.h"
#include <bits/stdc++.h>

using namespace std;

void decode(int nv, int nh) {
  vector<int> par(nv);
  for (int v = 0; v < nv; v++) {
    for (int b = 0; b < 10; b++) {
      if (decode_bit()) {
        par[v] += (1 << b);
      }
    }
  }
  vector<vector<int>> ch(nv);
  for (int i = 1; i < nv; i++) {
    ch[par[i]].push_back(i);
  }
  for (int h = 0; h < nh; h++) {
    vector<int> d(nv);
    for (int v = 0; v < nv; v++) {
      if (v + 2 >= nv) {
        int t = 0;
        t += 2 * decode_bit();
        t += decode_bit();
        d[v] = t - 1;
        continue;
      }
      int num = 0;
      for (int b = 0; b < 5; b++) {
        if (decode_bit()) {
          num += (1 << b);
        }
      }
      for (int t = v + 2; t >= v; t--) {
        d[t] = (num % 3) - 1;
        num /= 3;
      }
      v += 2;
    }
    vector<int> dist(nv, -1);
    dist[h] = 0;
    vector<int> que(1, h);
    for (int b = 0; b < (int) que.size(); b++) {
      int i = que[b];
      for (int j : ch[i]) {
        if (dist[j] == -1) {
          dist[j] = dist[i] + d[j];
          que.push_back(j);
        }
      }
      if (dist[par[i]] == -1) {
        dist[par[i]] = dist[i] - d[i];
        que.push_back(par[i]);
      }
    }
    for (int v = 0; v < nv; v++) {
      hops(h, v, dist[v]);
    }
  }
}
# Verdict Execution time Memory Grader output
1 Correct 158 ms 16548 KB Output is partially correct - 70012 call(s) of encode_bit()
2 Correct 1 ms 11272 KB Output is correct - 77 call(s) of encode_bit()
3 Correct 14 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
4 Correct 1 ms 11268 KB Output is correct - 95 call(s) of encode_bit()
5 Correct 16 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
6 Correct 15 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
7 Correct 27 ms 11756 KB Output is partially correct - 70012 call(s) of encode_bit()
8 Correct 12 ms 11268 KB Output is correct - 67282 call(s) of encode_bit()
9 Correct 13 ms 11268 KB Output is partially correct - 70012 call(s) of encode_bit()
10 Correct 13 ms 11524 KB Output is partially correct - 70012 call(s) of encode_bit()
11 Correct 16 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
12 Correct 16 ms 11256 KB Output is partially correct - 70012 call(s) of encode_bit()
13 Correct 30 ms 12028 KB Output is partially correct - 70012 call(s) of encode_bit()
14 Correct 20 ms 11520 KB Output is partially correct - 70012 call(s) of encode_bit()
15 Correct 14 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
16 Correct 28 ms 11872 KB Output is partially correct - 70012 call(s) of encode_bit()
17 Correct 25 ms 11852 KB Output is partially correct - 70012 call(s) of encode_bit()
18 Correct 31 ms 11952 KB Output is partially correct - 70012 call(s) of encode_bit()
19 Correct 20 ms 11864 KB Output is partially correct - 70012 call(s) of encode_bit()
20 Correct 38 ms 14248 KB Output is partially correct - 70012 call(s) of encode_bit()
21 Correct 44 ms 14252 KB Output is partially correct - 70012 call(s) of encode_bit()
22 Correct 27 ms 12008 KB Output is partially correct - 70012 call(s) of encode_bit()
23 Correct 48 ms 14516 KB Output is partially correct - 70012 call(s) of encode_bit()
# Verdict Execution time Memory Grader output
1 Correct 158 ms 16548 KB Output is partially correct - 70012 call(s) of encode_bit()
2 Correct 1 ms 11272 KB Output is correct - 77 call(s) of encode_bit()
3 Correct 14 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
4 Correct 1 ms 11268 KB Output is correct - 95 call(s) of encode_bit()
5 Correct 16 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
6 Correct 15 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
7 Correct 27 ms 11756 KB Output is partially correct - 70012 call(s) of encode_bit()
8 Correct 12 ms 11268 KB Output is correct - 67282 call(s) of encode_bit()
9 Correct 13 ms 11268 KB Output is partially correct - 70012 call(s) of encode_bit()
10 Correct 13 ms 11524 KB Output is partially correct - 70012 call(s) of encode_bit()
11 Correct 16 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
12 Correct 16 ms 11256 KB Output is partially correct - 70012 call(s) of encode_bit()
13 Correct 30 ms 12028 KB Output is partially correct - 70012 call(s) of encode_bit()
14 Correct 20 ms 11520 KB Output is partially correct - 70012 call(s) of encode_bit()
15 Correct 14 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
16 Correct 28 ms 11872 KB Output is partially correct - 70012 call(s) of encode_bit()
17 Correct 25 ms 11852 KB Output is partially correct - 70012 call(s) of encode_bit()
18 Correct 31 ms 11952 KB Output is partially correct - 70012 call(s) of encode_bit()
19 Correct 20 ms 11864 KB Output is partially correct - 70012 call(s) of encode_bit()
20 Correct 38 ms 14248 KB Output is partially correct - 70012 call(s) of encode_bit()
21 Correct 44 ms 14252 KB Output is partially correct - 70012 call(s) of encode_bit()
22 Correct 27 ms 12008 KB Output is partially correct - 70012 call(s) of encode_bit()
23 Correct 48 ms 14516 KB Output is partially correct - 70012 call(s) of encode_bit()
# Verdict Execution time Memory Grader output
1 Correct 158 ms 16548 KB Output is partially correct - 70012 call(s) of encode_bit()
2 Correct 1 ms 11272 KB Output is correct - 77 call(s) of encode_bit()
3 Correct 14 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
4 Correct 1 ms 11268 KB Output is correct - 95 call(s) of encode_bit()
5 Correct 16 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
6 Correct 15 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
7 Correct 27 ms 11756 KB Output is partially correct - 70012 call(s) of encode_bit()
8 Correct 12 ms 11268 KB Output is correct - 67282 call(s) of encode_bit()
9 Correct 13 ms 11268 KB Output is partially correct - 70012 call(s) of encode_bit()
10 Correct 13 ms 11524 KB Output is partially correct - 70012 call(s) of encode_bit()
11 Correct 16 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
12 Correct 16 ms 11256 KB Output is partially correct - 70012 call(s) of encode_bit()
13 Correct 30 ms 12028 KB Output is partially correct - 70012 call(s) of encode_bit()
14 Correct 20 ms 11520 KB Output is partially correct - 70012 call(s) of encode_bit()
15 Correct 14 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
16 Correct 28 ms 11872 KB Output is partially correct - 70012 call(s) of encode_bit()
17 Correct 25 ms 11852 KB Output is partially correct - 70012 call(s) of encode_bit()
18 Correct 31 ms 11952 KB Output is partially correct - 70012 call(s) of encode_bit()
19 Correct 20 ms 11864 KB Output is partially correct - 70012 call(s) of encode_bit()
20 Correct 38 ms 14248 KB Output is partially correct - 70012 call(s) of encode_bit()
21 Correct 44 ms 14252 KB Output is partially correct - 70012 call(s) of encode_bit()
22 Correct 27 ms 12008 KB Output is partially correct - 70012 call(s) of encode_bit()
23 Correct 48 ms 14516 KB Output is partially correct - 70012 call(s) of encode_bit()
# Verdict Execution time Memory Grader output
1 Correct 158 ms 16548 KB Output is partially correct - 70012 call(s) of encode_bit()
2 Correct 1 ms 11272 KB Output is correct - 77 call(s) of encode_bit()
3 Correct 14 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
4 Correct 1 ms 11268 KB Output is correct - 95 call(s) of encode_bit()
5 Correct 16 ms 11524 KB Output is correct - 63000 call(s) of encode_bit()
6 Correct 15 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
7 Correct 27 ms 11756 KB Output is partially correct - 70012 call(s) of encode_bit()
8 Correct 12 ms 11268 KB Output is correct - 67282 call(s) of encode_bit()
9 Correct 13 ms 11268 KB Output is partially correct - 70012 call(s) of encode_bit()
10 Correct 13 ms 11524 KB Output is partially correct - 70012 call(s) of encode_bit()
11 Correct 16 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
12 Correct 16 ms 11256 KB Output is partially correct - 70012 call(s) of encode_bit()
13 Correct 30 ms 12028 KB Output is partially correct - 70012 call(s) of encode_bit()
14 Correct 20 ms 11520 KB Output is partially correct - 70012 call(s) of encode_bit()
15 Correct 14 ms 11532 KB Output is partially correct - 70012 call(s) of encode_bit()
16 Correct 28 ms 11872 KB Output is partially correct - 70012 call(s) of encode_bit()
17 Correct 25 ms 11852 KB Output is partially correct - 70012 call(s) of encode_bit()
18 Correct 31 ms 11952 KB Output is partially correct - 70012 call(s) of encode_bit()
19 Correct 20 ms 11864 KB Output is partially correct - 70012 call(s) of encode_bit()
20 Correct 38 ms 14248 KB Output is partially correct - 70012 call(s) of encode_bit()
21 Correct 44 ms 14252 KB Output is partially correct - 70012 call(s) of encode_bit()
22 Correct 27 ms 12008 KB Output is partially correct - 70012 call(s) of encode_bit()
23 Correct 48 ms 14516 KB Output is partially correct - 70012 call(s) of encode_bit()