Submission #565000

#TimeUsernameProblemLanguageResultExecution timeMemory
565000shrimbSaveit (IOI10_saveit)C++17
50 / 100
224 ms14152 KiB
#include "grader.h" #include "encoder.h" #include"bits/stdc++.h" using namespace std; void encode(int n, int h, int p, int *v1, int *v2){ vector<pair<int,int>> adj[n + 1]; for (int i = 0 ; i < p ; i++) { adj[v1[i]].emplace_back(v2[i],i); adj[v2[i]].emplace_back(v1[i],i); } vector<bool> ye(p); for (int i = 0 ; i < h ; i++) { int dist[n]; for (int j = 0 ; j < n ; j++) dist[j] = 0; dist[i] = 1; queue<int> q; q.push(i); while (q.size()) { auto cur = q.front(); q.pop(); for (auto [j,k] : adj[cur]) { if (!dist[j]) { dist[j] = 1; ye[k] = 1; q.push(j); } } } } vector<int> adj2[n]; vector<int> cnt(n); for (int i = 0 ; i < p ; i++) { if (ye[i]) { cnt[v1[i]]++; cnt[v2[i]]++; } } for (int i = 0 ; i < p ; i++) { if (ye[i]) { if (cnt[v1[i]] > cnt[v2[i]]) { adj2[v1[i]].push_back(v2[i]); } else { adj2[v2[i]].push_back(v1[i]); } } } auto givenum = [&](int x) { for (int k = 0 ; k < 10 ; k++) encode_bit(bool(x & (1 << k))); }; for (int i = 0 ; i < n ; i++) { if (adj2[i].size()) { givenum(i); for(int j : adj2[i]) givenum(j); for (int i = 0 ; i < 10 ; i++) encode_bit(1); } } for (int i = 0 ; i < 10 ; i++) encode_bit(1); }
#include "grader.h" #include "decoder.h" #include "bits/stdc++.h" using namespace std; void decode(int n, int h) { auto getnum = [&]() -> int { int ret = 0; for (int k = 0 ; k < 10 ; k++) { ret |= (1 << k) * decode_bit(); } return ret; }; vector<int> adj[n]; while (true) { int a = getnum(); if (__builtin_popcount(a) == 10) break; while (true) { int b = getnum(); if (__builtin_popcount(b) == 10) break; adj[a].push_back(b); adj[b].push_back(a); } } for (int i = 0 ; i < h ; i++) { int dist[n]; for (int j = 0 ; j < n ; j++) dist[j] = INT_MAX; queue<int> q; q.push(i); dist[i] = 0; while (q.size()) { auto cur = q.front(); q.pop(); for (int j : adj[cur]) { if (dist[j] > dist[cur] + 1) { dist[j] = dist[cur] + 1; q.push(j); } } } for (int j = 0 ; j < n ; j++) hops(i, j, dist[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...