제출 #965647

#제출 시각아이디문제언어결과실행 시간메모리
965647fzyzzz_z저장 (Saveit) (IOI10_saveit)C++17
0 / 100
10095 ms12996 KiB
#include <bits/stdc++.h> using namespace std; #include "grader.h" #include "encoder.h" // vector<int> bits; // void encode_bit(int x) { bits.push_back(x); } void encode(int n, int nh, int ne, int *v1, int *v2){ int g[n][n]; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { g[i][j] = 0; } } for (int i = 0; i < ne; ++i) { g[v1[i]][v2[i]] = g[v2[i]][v1[i]] = 1; } int inf = 1e9; int d[nh][n]; string ans = ""; vector<int> ord(nh); for (int i = 0; i < nh; +i) ord[i] = i; for (int t = 0; t < 2; ++t) { string res = ""; random_shuffle(ord.begin(), ord.end()); for (int i = 0; i < nh; ++i) { for (int j = 0; j < n; ++j) { d[i][j] = inf; } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { g[i][j] &= 1; } } for (int i: ord) { vector<int> c(1, i); d[i][i] = 0; for (int cd = 0; cd < n; ++cd) { vector<int> nc; for (auto x: c) { for (int y = 0; y < n; ++y) { if (d[i][y] == inf && g[x][y] == 2) { d[i][y] = cd + 1; nc.push_back(y); } } } for (auto x: c) { for (int y = 0; y < n; ++y) { if (d[i][y] == inf && g[x][y] == 1) { d[i][y] = cd + 1; g[x][y] = g[y][x] = 2; nc.push_back(y); } } } c = nc; } } for (int i = 0; i < n; ++i) { int c = 0; for (int j = i + 1; j < n; ++j) { c += g[i][j] == 2; } if (n < c * 11) { // encode_bit(0); res += '0'; for (int j = i + 1; j < n; ++j) { // encode_bit(g[i][j] == 2); res += '0' + (g[i][j] == 2); } } else { // encode_bit(1); res += '1'; int mx = 0; for (int j = i + 1; j < n; ++j) if (g[i][j] == 2) mx = j; for (int j = i + 1; j < n; ++j) { if (g[i][j] != 2) continue; // encode_bit(1); res += '1'; for (int b = 0; b < 10; ++b) { // encode_bit(((1 << b) & j) >> b); res += '0'+ (((1 << b) & j) >> b); } } // encode_bit(0); res += '0'; } } if (res.size() < ans.size() || ans.size() == 0) ans = res; } for (auto x: ans) encode_bit(x != '0'); return; } // int main() { // ios::sync_with_stdio(false); // cin.tie(nullptr); // int n, k, p; // cin >> n >> k >> p; // int a[p], b[p]; // for (int i = 0; i < p; ++i) cin >> a[i] >> b[i]; // encode(n, k, p, a, b); // for (int i = 0; i < bits.size(); ++i) cout << bits[i]; // cout << '\n'; // return 0; // }
#include "grader.h" #include "decoder.h" #include <bits/stdc++.h> using namespace std; // string ss; // int decode_bit() { char c = ss.back(); ss.pop_back(); return c != '0'; } // void hops(int k, int i, int d) { // cout << k << ' ' << i << ' ' << d << '\n'; // } void decode(int n, int nh) { int g[n][n]; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { g[i][j] = 0; } } for (int i = 0; i < n; ++i) { int t = decode_bit(); if (t == 0) { for (int j = i + 1; j < n; ++j) { if (decode_bit()) { g[i][j] = g[j][i] = 1; // cout << "! " << i << ' ' << j << '\n'; } } } else { while (decode_bit()) { int x = 0; for (int b = 0; b < 10; ++b) { x += (decode_bit() << b); } g[i][x] = g[x][i] = 1; // cout << "! " << i << ' ' << x << '\n'; } } } for (int k = 0; k < nh; ++k) { vector<int> d(n, 1e9); d[k] = 0; queue<int> q; q.push(k); while (!q.empty()) { auto x = q.front(); q.pop(); for (int y = 0; y < n; ++y) { if (y != x && d[y] > n && g[x][y]) { d[y] = d[x] + 1; q.push(y); } } } for (int i = 0; i < n; ++i) { hops(k, i, d[i]); } } } // int main() { // ios_base::sync_with_stdio(false); // cin.tie(0); // int n, k; // cin >> n >> k; // cin >> ss; // reverse(ss.begin(), ss.end()); // decode(n, k); // return 0; // }

컴파일 시 표준 에러 (stderr) 메시지

encoder.cpp: In function 'void encode(int, int, int, int*, int*)':
encoder.cpp:26:26: warning: for increment expression has no effect [-Wunused-value]
   26 |  for (int i = 0; i < nh; +i) ord[i] = i;
      |                          ^~
encoder.cpp:85:9: warning: variable 'mx' set but not used [-Wunused-but-set-variable]
   85 |     int mx = 0;
      |         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...