Submission #668370

#TimeUsernameProblemLanguageResultExecution timeMemory
668370finn__ICC (CEOI16_icc)C++17
61 / 100
163 ms496 KiB
#include "icc.h" #include <bits/stdc++.h> using namespace std; int *c, *d; void dfs( vector<vector<unsigned>> const &g, unsigned u, vector<unsigned> &y, vector<bool> &vis) { y.push_back(u); vis[u] = 1; for (unsigned v : g[u]) if (!vis[v]) dfs(g, v, y, vis); } void fill_order(vector<vector<unsigned>> const &g, vector<vector<unsigned>> &y) { vector<bool> vis(g.size(), 0); y.clear(); for (unsigned i = 0; i < g.size(); i++) { if (!vis[i]) { y.push_back({}); dfs(g, i, y.back(), vis); } } } size_t add_components(int *z, vector<vector<unsigned>> const &y, size_t a, size_t b) { size_t size = 0; for (size_t i = a; i < b; i++) { for (unsigned u : y[i]) { z[size] = u + 1; size++; } } return size; } void run(int n) { c = (int *)malloc(n * sizeof(int)); d = (int *)malloc(n * sizeof(int)); vector<vector<unsigned>> g(n); vector<vector<unsigned>> y; for (unsigned z = 0; z < n - 1; z++) { fill_order(g, y); size_t cs, ds; while (1) { random_shuffle(y.begin(), y.end()); cs = add_components(c, y, 0, y.size() / 2); ds = add_components(d, y, y.size() / 2, y.size()); if (query(cs, ds, c, d)) break; } size_t a = 0, b = cs - 1; while (a < b) { size_t mid = (a + b) / 2; if (query(mid + 1, ds, c, d)) b = mid; else a = mid + 1; } unsigned const u = c[a]; a = 0, b = ds - 1; while (a < b) { size_t mid = (a + b) / 2; if (query(cs, mid + 1, c, d)) b = mid; else a = mid + 1; } unsigned const v = d[a]; setRoad(u, v); g[u - 1].push_back(v - 1); g[v - 1].push_back(u - 1); } free(c); free(d); }

Compilation message (stderr)

icc.cpp: In function 'void run(int)':
icc.cpp:55:28: warning: comparison of integer expressions of different signedness: 'unsigned int' and 'int' [-Wsign-compare]
   55 |     for (unsigned z = 0; z < n - 1; z++)
      |                          ~~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...