제출 #1112693

#제출 시각아이디문제언어결과실행 시간메모리
1112693Ghulam_JunaidICC (CEOI16_icc)C++17
7 / 100
51 ms900 KiB
#include <bits/stdc++.h> #include "icc.h" // #include "grader.cpp" using namespace std; #define all(vv) vv.begin(), vv.end() mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int N = 105; int n, par[N]; vector<int> S[N]; int root(int v){ return (par[v] == -1 ? v : par[v] = root(par[v])); } void merge(int u, int v){ if ((u = root(u)) == (v = root(v))) return ; if (S[u].size() > S[v].size()) swap(u, v); for (int x : S[u]){ par[x] = v; S[v].push_back(x); } S[u].clear(); } void run(int nn){ srand(time(0)); n = nn; for (int i = 1; i <= n; i ++) par[i] = -1, S[i] = {i}; int overall = 0; for (int edge = 0; edge < n - 1; edge ++){ vector<int> roots[2], vec[2]; while (1){ overall++; set<int> st; for (int v = 1; v <= n; v ++) st.insert(root(v)); vector<int> all_roots; for (int v : st) all_roots.push_back(v); for (int j : {0, 1}) roots[j].clear(), vec[j].clear(); for (int x : all_roots){ int id = rng() % 2; roots[id].push_back(x); for (int v : S[x]) vec[id].push_back(v); } // shuffle(all_roots.begin(), all_roots.end(), rng); // for (int i = 0; i < all_roots.size(); i ++){ // int id = (i >= all_roots.size() / 2); // roots[id].push_back(all_roots[i]); // for (int v : S[all_roots[i]]) // vec[id].push_back(v); // } int a[(int)vec[0].size()], b[(int)vec[1].size()]; copy(all(vec[0]), a), copy(all(vec[1]), b); int res = query((int)vec[0].size(), (int)vec[1].size(), a, b); if (res) break; } vector<int> tmp[2] = {vec[0], vec[1]}; for (int j : {0, 1}){ int l = -1; int r = vec[j].size() - 1; while (r - l > 1){ int mid = (l + r) / 2; tmp[j].clear(); for (int i = 0; i <= mid; i ++) tmp[j].push_back(vec[j][i]); int a[(int)tmp[0].size()], b[(int)tmp[1].size()]; copy(all(tmp[0]), a), copy(all(tmp[1]), b); int res = query((int)tmp[0].size(), (int)tmp[1].size(), a, b); if (res) r = mid; else l = mid; tmp[j].clear(); for (int i = l + 1; i <= r; i ++) tmp[j].push_back(vec[j][i]); } vec[j] = tmp[j]; } if (overall > 300) cout << 1 / 0 << endl; setRoad(vec[0][0], vec[1][0]); merge(vec[0][0], vec[1][0]); } }

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

icc.cpp: In function 'void run(int)':
icc.cpp:104:23: warning: division by zero [-Wdiv-by-zero]
  104 |             cout << 1 / 0 << endl;
      |                     ~~^~~
#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...