제출 #1019089

#제출 시각아이디문제언어결과실행 시간메모리
1019089socpiteSaveit (IOI10_saveit)C++14
50 / 100
325 ms15008 KiB
#include "grader.h" #include "encoder.h" #include<bits/stdc++.h> using namespace std; namespace { const int maxn = 1e3+5; int E[maxn][maxn]; int dist[maxn][maxn]; int vis[maxn]; } void encode(int nv, int nh, int ne, int *v1, int *v2){ memset(E, 0, sizeof(E)); memset(dist, 0, sizeof(dist)); memset(vis, 0, sizeof(vis)); for(int i = 0; i < ne; i++)E[v1[i]][v2[i]] = E[v2[i]][v1[i]] = 1; for(int i = 0; i < nh; i++){ dist[i][i] = 0; queue<int> q; q.push(i); while(!q.empty()){ auto x = q.front(); q.pop(); for(int j = 0; j < nv; j++){ if(!E[x][j] || dist[i][j] || j == i)continue; dist[i][j] = dist[i][x] + 1; q.push(j); } } } mt19937 rng(69420); vector<int> vec(nh); iota(vec.begin(), vec.end(), 0); shuffle(vec.begin(), vec.end(), rng); for(int i = 0; i < nh; i++){ vis[vec[i]] = 1; for(int j = 0; j < nv; j++){ if(vis[j])continue; int mx = nv-1; for(int k = 0; k < i; k++){ mx = min(mx, dist[vec[k]][vec[i]] + dist[vec[k]][j]); } mx--; int tmp = dist[vec[i]][j]-1; while(mx){ encode_bit(tmp&1); tmp>>=1; mx>>=1; } } } }
#include "grader.h" #include "decoder.h" #include<bits/stdc++.h> using namespace std; namespace { const int maxn = 1e3+5; int dist[maxn][maxn]; int vis[maxn]; } void decode(int nv, int nh) { memset(vis, 0, sizeof(vis)); mt19937 rng(69420); vector<int> vec(nh); iota(vec.begin(), vec.end(), 0); shuffle(vec.begin(), vec.end(), rng); for(int i = 0; i < nh; i++){ vis[vec[i]] = 1; for(int j = 0; j < nv; j++){ if(vis[j]){ hops(vec[i], j, dist[j][vec[i]]); continue; } int mx = nv-1; for(int k = 0; k < i; k++){ mx = min(mx, dist[vec[k]][vec[i]] + dist[vec[k]][j]); } mx--; dist[vec[i]][j] = 0; int crr = 0; while(mx){ dist[vec[i]][j]|=decode_bit()<<(crr++); mx>>=1; } dist[vec[i]][j]++; hops(vec[i], j, dist[vec[i]][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...