Submission #597467

#TimeUsernameProblemLanguageResultExecution timeMemory
5974671binICC (CEOI16_icc)C++14
0 / 100
3 ms468 KiB
#include <bits/stdc++.h> #include "icc.h" #include <cassert> using namespace std; typedef long long ll; #define all(v) v.begin(), v.end() const int NMAX = 105; int par[NMAX], a[NMAX], b[NMAX], sza, szb; int find(int x){ return par[x] == -1 ? x : par[x] = find(par[x]);} vector<int> v[NMAX]; void run(int n){ memset(par, -1, sizeof(par)); for(int i = 1; i <= n; i++) v[i].emplace_back(i); int sz = n; for(int i = 0; i < n - 1; i++, sz--){ vector<int> arr; for(int i = 1; i <= n; i++) if(par[i] == -1) arr.emplace_back(i); for(int bit = 0; (1 << bit) < sz; bit++){ sza = szb = 0; for(int j = 0; j < sz; j++){ if(j & (1 << bit)) { for(auto x : v[arr[j]]) a[sza++] = x; } else{ for(auto x : v[arr[j]]) b[szb++] = x; } } if(query(sza, szb, a, b)){ int l = 0, r = sza - 1, m, x, y; while(l <= r){ m = (l + r) >> 1; if(query(m + 1, szb, a, b)) r = m - 1, x = a[m]; else l = m + 1; } l = 0; r = szb - 1; while(l <= r){ m = (l + r) >> 1; if(query(sza, m + 1, a, b)) r = m - 1, y = a[m]; else l = m + 1; } setRoad(x, y); x = find(x); y = find(y); if(v[x].size() < v[y].size()) swap(x, y); for(int & t : v[y]) v[x].emplace_back(t); par[y] = x; break; } assert(1 << (bit + 1) <= sz); } } return; }

Compilation message (stderr)

icc.cpp: In function 'void run(int)':
icc.cpp:11:30: warning: 'y' may be used uninitialized in this function [-Wmaybe-uninitialized]
   11 | int find(int x){ return par[x] == -1 ? x : par[x] = find(par[x]);}
      |                         ~~~~~^
icc.cpp:36:47: note: 'y' was declared here
   36 |                 int l = 0, r = sza - 1, m, x, y;
      |                                               ^
icc.cpp:11:51: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
   11 | int find(int x){ return par[x] == -1 ? x : par[x] = find(par[x]);}
      |                                            ~~~~~~~^~~~~~~~~~~~~~
icc.cpp:36:44: note: 'x' was declared here
   36 |                 int l = 0, r = sza - 1, m, x, y;
      |                                            ^
#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...