Submission #23149

#TimeUsernameProblemLanguageResultExecution timeMemory
23149kdh9949Saveit (IOI10_saveit)C++14
100 / 100
275 ms11608 KiB
#include "grader.h" #include "encoder.h" #include <bits/stdc++.h> using namespace std; static int n, h, p[1010], md[1010], v[1010]; static vector<int> e[1010], t[1010]; static queue<int> q; void dfs(int x){ for(auto &i : e[x]){ if(p[i] != -1) continue; p[i] = x; dfs(i); } } void fil(int x, int p){ for(auto &i : t[x]){ if(i == p) continue; v[i] = md[i] - md[x] + 1; fil(i, x); } } void bfs(int x){ fill(md, md + n, 1e9); md[x] = 0; q.push(x); while(!q.empty()){ int c = q.front(); q.pop(); for(auto &i : e[c]){ if(md[c] + 1 >= md[i]) continue; md[i] = md[c] + 1; q.push(i); } } fil(x, -1); v[x] = 1; for(int i = 0; i < n; i += 5){ int t = 0; for(int j = 0, k = 1; j < 5; j++, k *= 3) t += k * v[i + j]; for(int j = 0; j < 8; j++) encode_bit(!!(t & (1 << j))); } } void encode(int nv, int nh, int ne, int *v1, int *v2){ n = nv; h = nh; for(int i = 0, x, y; i < ne; i++){ x = v1[i]; y = v2[i]; e[x].push_back(y); e[y].push_back(x); } fill(p + 1, p + n, -1); dfs(0); for(int i = 1; i < n; i++){ for(int j = 0; j < 10; j++) encode_bit(!!(p[i] & (1 << j))); } for(int i = 1; i < n; i++){ t[i].push_back(p[i]); t[p[i]].push_back(i); } for(int i = 0; i < h; i++){ bfs(i); } }
#include "grader.h" #include "decoder.h" #include <bits/stdc++.h> using namespace std; static int n, h, v[1010]; static vector<int> t[1010]; void get(int x, int p){ for(auto &i : t[x]){ if(i == p) continue; v[i] += v[x]; get(i, x); } } void decode(int nv, int nh){ n = nv; h = nh; for(int i = 1; i < n; i++){ int x = 0; for(int j = 0; j < 10; j++) x += (decode_bit() << j); t[x].push_back(i); t[i].push_back(x); } for(int i = 0; i < h; i++){ for(int j = 0; j < n; j += 5){ int x = 0; for(int k = 0; k < 8; k++) x += (decode_bit() << k); for(int k = 0; k < 5; k++){ v[j + k] = x % 3 - 1; x /= 3; } } get(i, -1); for(int j = 0; j < n; j++) hops(i, j, v[j]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...