# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
605639 |
2022-07-25T20:42:53 Z |
AlperenT |
ICC (CEOI16_icc) |
C++17 |
|
136 ms |
588 KB |
#include <bits/stdc++.h>
#include "icc.h"
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
struct Comp{
vector<int> nodes;
};
vector<vector<int>> tree;
vector<bool> vis;
void dfs(int v, vector<int> &vec){
vis[v] = true;
vec.push_back(v);
for(auto e : tree[v]){
if(!vis[e]) dfs(e, vec);
}
}
bool cmp(Comp &a, Comp &b){
return a.nodes.size() > b.nodes.size();
}
void run(int n){
tree.assign(n + 1, {});
int mx = 0;
for(int it = 0; it <= n - 1; it++){
int s, t;
vector<Comp> comps;
vis.assign(n + 1, false);
for(int v = 1; v <= n; v++){
if(!vis[v]){
Comp tmp;
comps.push_back(tmp);
dfs(v, comps.back().nodes);
}
}
sort(comps.begin(), comps.end(), cmp);
vector<int> a, b, c;
for(int k = 0; k < 7; k++){
a.clear(), b.clear();
for(int i = 0; i < comps.size(); i++){
if(i & (1 << k)) for(auto v : comps[i].nodes) a.push_back(v);
else for(auto v : comps[i].nodes) b.push_back(v);
}
if(query(a.size(), b.size(), a.data(), b.data())) break;
}
shuffle(a.begin(), a.end(), rng);
shuffle(b.begin(), b.end(), rng);
int l = -1, r = a.size() - 1, m;
while(r - l > 1){
m = l + (r - l) / 2;
c.clear();
for(int i = 0; i <= m; i++) c.push_back(a[i]);
if(query(c.size(), b.size(), c.data(), b.data())) r = m;
else l = m;
}
s = a[r];
l = -1, r = b.size() - 1;
while(r - l > 1){
m = l + (r - l) / 2;
c.clear();
for(int i = 0; i <= m; i++) c.push_back(b[i]);
if(query(c.size(), a.size(), c.data(), a.data())) r = m;
else l = m;
}
t = b[r];
setRoad(s, t);
tree[s].push_back(t);
tree[t].push_back(s);
}
}
Compilation message
icc.cpp: In function 'void run(int)':
icc.cpp:57:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<Comp>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
57 | for(int i = 0; i < comps.size(); i++){
| ~~^~~~~~~~~~~~~~
icc.cpp:32:6: warning: unused variable 'mx' [-Wunused-variable]
32 | int mx = 0;
| ^~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
468 KB |
Ok! 100 queries used. |
2 |
Correct |
5 ms |
468 KB |
Ok! 98 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
35 ms |
468 KB |
Ok! 517 queries used. |
2 |
Correct |
34 ms |
468 KB |
Ok! 666 queries used. |
3 |
Correct |
32 ms |
468 KB |
Ok! 659 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
103 ms |
488 KB |
Ok! 1374 queries used. |
2 |
Correct |
123 ms |
492 KB |
Ok! 1616 queries used. |
3 |
Correct |
136 ms |
496 KB |
Ok! 1580 queries used. |
4 |
Correct |
108 ms |
468 KB |
Ok! 1492 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
103 ms |
500 KB |
Ok! 1452 queries used. |
2 |
Correct |
103 ms |
492 KB |
Ok! 1447 queries used. |
3 |
Correct |
112 ms |
500 KB |
Ok! 1590 queries used. |
4 |
Correct |
98 ms |
468 KB |
Ok! 1397 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
117 ms |
468 KB |
Ok! 1594 queries used. |
2 |
Correct |
114 ms |
488 KB |
Ok! 1588 queries used. |
3 |
Correct |
115 ms |
488 KB |
Ok! 1615 queries used. |
4 |
Correct |
113 ms |
588 KB |
Ok! 1597 queries used. |
5 |
Correct |
112 ms |
468 KB |
Ok! 1460 queries used. |
6 |
Correct |
119 ms |
504 KB |
Ok! 1570 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
115 ms |
496 KB |
Ok! 1600 queries used. |
2 |
Correct |
129 ms |
468 KB |
Ok! 1586 queries used. |