Submission #718257

#TimeUsernameProblemLanguageResultExecution timeMemory
718257stevancvICC (CEOI16_icc)C++14
100 / 100
128 ms504 KiB
#include <bits/stdc++.h> #include "icc.h" #define ll long long #define ld long double #define sp ' ' #define en '\n' #define smin(a, b) a = min(a, b) #define smax(a, b) a = max(a, b) using namespace std; const int N = 100 + 2; const int inf = 1e9; vector<int> svi[N]; int aaa[N], bbb[N]; int Query(vector<int> a, vector<int> b) { int A = a.size(); int B = b.size(); for (int i = 0; i < A; i++) aaa[i] = a[i]; for (int i = 0; i < B; i++) bbb[i] = b[i]; return query(A, B, aaa, bbb); } int gazda[N]; vector<int> G(vector<int> x, vector<int> y) { while (x.size() > 1) { vector<int> tmp[2]; for (int i = 0; i < x.size(); i++) tmp[i & 1].push_back(x[i]); if (Query(tmp[0], y) == 1) x = tmp[0]; else x = tmp[1]; } return x; } void run(int n) { vector<int> v; for (int i = 1; i <= n; i++) { svi[i].push_back(i); gazda[i] = i; } auto Sredi = [&] (vector<int> v) { vector<int> ret; for (int i = 0; i < v.size(); i++) { for (int j : svi[v[i]]) ret.push_back(j); } return ret; }; for (int zz = 0; zz < n - 1; zz++) { vector<int> v; for (int i = 1; i <= n; i++) { if (gazda[i] == i) v.push_back(i); } int sz = v.size(); vector<int> a, b; for (int i = 0; ; i++) { for (int j = 0; j < sz; j++) { if ((1 << i) & j) a.push_back(v[j]); else b.push_back(v[j]); } auto aa = Sredi(a); auto bb = Sredi(b); if (Query(aa, bb) == 1) break; else {a.clear(); b.clear();} } a = Sredi(a); b = Sredi(b); a = G(a, b); b = G(b, a); int inda = a[0]; int indb = b[0]; setRoad(inda, indb); while (gazda[inda] != inda) inda = gazda[inda]; while (gazda[indb] != indb) indb = gazda[indb]; for (int i : svi[indb]) { svi[inda].push_back(i); gazda[i] = inda; } svi[indb].clear(); } }

Compilation message (stderr)

icc.cpp: In function 'std::vector<int> G(std::vector<int>, std::vector<int>)':
icc.cpp:24:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |         for (int i = 0; i < x.size(); i++) tmp[i & 1].push_back(x[i]);
      |                         ~~^~~~~~~~~~
icc.cpp: In lambda function:
icc.cpp:38:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |         for (int i = 0; i < v.size(); i++) {
      |                         ~~^~~~~~~~~~
#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...